增加数组vba中元素的值

时间:2016-11-23 00:30:08

标签: arrays excel vba excel-vba

我在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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您的代码按预期工作。你应该看:Excel VBA Introduction Part 3 - What to do When Things Go Wrong (Errors and Debugging)

enter image description here 在这里,我设置手表来监控您的变量。当值发生变化时,myArray(2)myArray(4)的手表会设置为中断。

enter image description here