/ / Typenkonfliktfehler beim Summieren einer Dimension in einem mehrdimensionalen Array - Excel, vba, excel-vba

Geben Sie Mismatch-Fehler beim Summieren in einer Dimension im Multidimensionsfeld ein - excel, vba, excel-vba

Ich habe ein 2D-Array und versuche, eine Dimension hinzuzufügen. Das 2D-Array ist vom Typ variant und kann einige Elemente als null ("") enthalten

Hier ist der Code soweit

"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

Ich erhalte einen Typenkonfliktfehler, wenn der obige Code ausgeführt wird. Bitte helfen Sie mir beim Debuggen

Antworten:

2 für die Antwort № 1

Sie bekommen wahrscheinlich eine Type mismatch weil CDbl(newArray(i, index)) kann eigentlich keine Zahl sein.

Das funktioniert für mich. Bitte ändern Sie den Code entsprechend Ihren Bedürfnissen.

Zu Demonstrationszwecken speichere ich einen Excel-Bereich in einem 2D-Array und konvertiere ihn dann in ein 1D-Temp-Array. Sobald dies erledigt ist, speichere ich einfach das relevante Numbers im Double Array und schließlich Berechnung der Summe.

Nehmen wir an, das Arbeitsblatt sieht so aus

Bildbeschreibung hier eingeben

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

Und das ist die Ausgabe

Bildbeschreibung hier eingeben