【发布时间】:2021-01-14 10:44:18
【问题描述】:
我有两个数组:Arr1 有 11 个值,一些重复一些没有,Arr2 包含与 Arr1 相同的值,只是没有重复。当时的想法是使用 Countif 函数来计算 Arr2 中的值出现在 Arr1 中的次数,但我知道 countif 不适用于数组。
Arr1 包含 = A,A,B,C,A,D,E,E,F,F,G
Arr2 包含 = A,B,C,D,E,F,G
理想情况下,代码会在一列中输出 Array2,在另一列中输出相应的计数,如下所示:
Col R Col S
A 3
B 1
C 1
D 1
E 2
F 2
G 1
这是我编写的代码,但仅适用于一个值:
Cells(1, 18).Resize(UBound(Arr2)).Value = Application.Transpose(Arr2)
Dim count As Integer
Dim i As Double
For i = 1 To 7
count = count + Abs(Arr1(i) = "A")
Next i
Range("S1") = count
如果我尝试通过添加数组来循环遍历数据,则会收到“超出范围”错误。
Cells(1, 18).Resize(UBound(Arr2)).Value = Application.Transpose(Arr2)
Dim count As Integer
Dim i As Double
For i = 1 To 7
count = count + Abs(Arr1(i) = Arr2(i))
Cells(i, "S") = count
Next i
我不太确定哪里出错了,我假设添加 Arr2 是问题所在,因此非常感谢任何有关如何修复它的建议! 谢谢!
【问题讨论】:
-
您需要嵌套两个循环。循环第二个数组,然后循环第一个找到它相等的地方。
-
但 COUNTIFS() 真的可以在这里工作。 .