2

菜鸟问题:我想计算数组的非空元素?

我的尝试:

Dim Arr(1 To 15) As Double
'populating some of the elements of Arr
'...

Dim nonEmptyElements As Integer, i As Integer
nonEmptyElements = 0: i = 0
For i = LBound(Arr) To UBound(Arr)
    If Not Arr(i) = "" Then
        nonEmptyElements = nonEmptyElements + 1
    End If
Next

使用此程序,我收到错误:If 语句上的类型不匹配。

如果尝试将 if 条件更改为If Not IsEmpty(Arr(i)) Then,我得到nonEmptyElements = 15结果。

关于如何完成代码的任何建议?

4

2 回答 2

1
    Dim Arr(0 To 15) As Double
    Arr(6) = 1.2
    Arr(3) = 7
    Dim nonEmptyElements As Integer, i As Integer
    nonEmptyElements = 0 : i = 0
    For i = LBound(Arr) To UBound(Arr)
        If Not Arr(i) = 0 Then
            nonEmptyElements = nonEmptyElements + 1
        End If
    Next

默认情况下,双精度值为 0.0,因此请检查是否:

Arr(i) = 0
于 2013-07-26T15:03:37.190 回答
1
Application.CountA(myarray)

CountA 是一个用于计算非空值的工作表函数。

仅适用于 VBA6,不适用于 VBA7。

于 2014-03-12T14:38:02.473 回答