1

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

这是到目前为止的代码

'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

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

4

1 回答 1

2

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

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

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

假设工作表看起来像这样

在此处输入图像描述

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

这是输出

在此处输入图像描述

于 2013-11-13T21:22:55.730 回答