我在VBA for Excel中工作,我有一个整数数组.我想要做的是在满足条件时将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