gpt4 book ai didi

VBA - 如果范围包含值,则 Array(i) = 1、循环、求和

转载 作者:行者123 更新时间:2023-12-03 02:59:51 25 4
gpt4 key购买 nike

我是 VBA 新手,但之前有 PHP 编程逻辑和各种统计编程语法的经验。我正在尝试编写一段代码来搜索一系列单元格区域以查找特定值 - 如果该值存在于该范围内,我希望它将 1 插入到数组中,如果不存在,则插入 0。

我的数据看起来像:

**Item  R1  R2**
1121 1 3
1121 2
1121
1121 3 2
1121 3
1122 4 5
1122 3 5
1122 5
1122 4
1122 5

我的最终目标是能够对数组中的值求和并计算每个评级的项目总数。例如,在上面的示例中,我希望能够生成:

Number of Items with Rating of 1 = 1

Number of Items with Rating of 2 = 1

Number of Items with Rating of 3 = 2

And so on.

我写的代码是:

Sub Items()

Dim myArray() As Variant
Dim i As Integer
Dim k As Integer
i = 0
k = 0
R5 = Range("G(2+k):H(6+k)")
mycount = Application.WorksheetFunction.Sum(myArray)


Sheets("Operational").Select

For Each R5 In Range("G2:H206")
ReDim myArray(0 To i)
myArray(i) = Cell.Value
i = i + 1
k = k + 4

R5.Select
If R5.Value = "1" Then
myArray(i) = 1
Else
myArray(i) = 0
End If
Next

End Sub

每个项目有 5 行,因此我认为可以将其视为重复、一致的循环。但是,当我尝试运行它时,出现错误 - “应用程序定义或对象定义的错误。”

我知道这可能不是最好的方法,而且我对此很陌生,我不知道从哪里开始进行故障排除。任何帮助将非常感激。

此外,如果有人对 VBA 结构/代码或初学者教程有很好的引用,请告诉我!我没有很幸运地找到任何好的引用资料。

最佳答案

如果我正确地阅读了您的要求,您可以非常轻松且更简单地完成此操作,而无需 VBA。

这是解决方案的屏幕截图。

H:K 列对每个项目的每个评级列执行 CountIf(请参见公式栏)。 G 列是每个评级的 H:K 的简单总和。

enter image description here

更新

为了反射(reflect)按项目的评级,非 VBA 方法变为:

enter image description here

您可能可以重新排列或修改它以使其更漂亮。此外,您还可以通过将项目编号复制到新范围并使用删除重复项(XL2007 及更高版本)或高级过滤器 > 唯一值 (XL2003) 来获取唯一的项目编号列表。另外,如果您使用的是 XL 2003,CountIF 将不起作用,您需要使用 =Count(If( 数组公式。如果需要,我可以解释。

关于VBA - 如果范围包含值,则 Array(i) = 1、循环、求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11226992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com