在多维数组中沿一个维求和时,键入不匹配错误

时间:2013-11-13 21:04:02

标签: excel vba excel-vba

我有一个2D数组,我试图沿着一个维度添加。 2D数组是变体类型,可能有一些元素为null(“”)

这是迄今为止的代码

'newArray is 2D Array
Function SumColumn(newArray As Variant, index As Integer) As Double
    Dim tempArray() As Double
    ReDim tempArray(1 To UBound(newArray))
    For i = 1 To (UBound(newArray))
        tempArray(i) = CDbl(newArray(i, index))
    Next
    SumColumn = Application.WorksheetFunction.Sum(tempArray)
End Function

运行上面的代码时出现类型不匹配错误。请帮我调试

1 个答案:

答案 0 :(得分:2)

您可能会获得Type mismatch,因为CDbl(newArray(i, index))可能实际上不是数字。

这对我有用。请修改代码以满足您的需求。

出于演示目的,我将Excel范围存储到2D数组中,然后将其转换为1D临时数组。完成后,我只是将相关的Numbers存储在Double数组中,最后计算总和。

让我们说工作表看起来像这样

enter image description here

Option Explicit

Sub Sample()
    Dim MyAr, TempAr()
    Dim dAr() As Double
    Dim n As Long, i As Long

    MyAr = ActiveSheet.Range("A1:A10").Value

    TempAr = Application.Transpose(MyAr)

    ReDim dAr(0 To 0)
    n = 0

    For i = LBound(TempAr) To UBound(TempAr)
        If Len(Trim(TempAr(i))) <> 0 Then
            If IsNumeric(Trim(TempAr(i))) Then
                ReDim Preserve dAr(0 To n)
                dAr(UBound(dAr)) = Trim(TempAr(i))
                n = n + 1
            End If
        End If
    Next i

    Debug.Print Application.WorksheetFunction.Sum(dAr)
End Sub

这是输出

enter image description here