我有一个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
运行上面的代码时出现类型不匹配错误。请帮我调试
答案 0 :(得分:2)
您可能会获得Type mismatch
,因为CDbl(newArray(i, index))
可能实际上不是数字。
这对我有用。请修改代码以满足您的需求。
出于演示目的,我将Excel范围存储到2D数组中,然后将其转换为1D临时数组。完成后,我只是将相关的Numbers
存储在Double数组中,最后计算总和。
让我们说工作表看起来像这样
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
这是输出