增加数组vba中元素的值

我在Excel的VBA工作,我有一个整数数组。 我想要做的是当我的条件已满足时,将1添加到数组内的特定元素。 在我的示例代码中,如果列A中的单元格是5,那么我想在数组的第5个位置添加1,或者如果单元格是3,那么将1添加到数组的第3个位置。

Sub CountCustomers() Dim myArray(5) Dim i as integer For i = 1 to 10 If Cells(i,1) = 5 Then myArray(4) = myArray(4)+1 ElseIf Cells(i,1) = 3 Then myArray(2) = myArray(2)+1 End If Next End Sub 

当我这样运行时,它会以正确的位置结束1,但不会增加任何更高的值。 有没有办法做到这一点?

下面有几个选项。

  • 更好地处理数组速度比循环(选项2)
  • 对于这个特定的例子,你可以直接使用CountIF (选项1)

如果你有多个处理路线,那么Select可以比Else If更有效率

代码#1

 Sub Option1() Debug.Print "number of 5's: " & Application.WorksheetFunction.CountIf([a1:a10], 5) Debug.Print "number of 3's: "; Application.WorksheetFunction.CountIf([a1:a10], 3) End Sub 

代码#2

 Sub Option2() Dim x Dim myArray(1 To 5) Dim lngCnt As Long 'put range into 2D variant array x = [a1:a10].Value2 For lngCnt = 1 To UBound(x) Select Case x(lngCnt, 1) Case 5 myArray(4) = myArray(4) + 1 Case 3 myArray(2) = myArray(2) + 1 Case Else 'do nothing End Select Next Debug.Print myArray(4), myArray(2) End Sub 

您的代码按预期工作。 您应该看: Excel VBA简介第3部分 – 如何处理错误(错误和debugging)

在这里输入图像描述 在这里,我设置手表来监视你的variables。 myArray(2)myArray(4)的手表在值发生变化时设置为中断。

在这里输入图像说明