Array-Konstanten in Excel
-
12-09-2019 - |
Frage
Ich habe ein Array Konstante definiert in Zelle A1 als {1,2,3}. Dies zeigt, als "1" (der erste Wert in der Matrix).
Ich mag die Formel SUMME (A1) Rückkehr 6. Jedoch habe, SUM A1 als Einzeller Array verwendet, anstatt das Array-Konstante innerhalb A1 enthalten -. Und daher SUM (A1) ergibt 1
Ebenso würde ich erwarten, MITTELWERT (A1) ergibt 1 statt 2.
So einfach gesprochen, wie ich erhalte SUM (A1) den gleichen Wert wie SUM zurückzukehren ({1,2,3})?
Ich mag nicht die Array-Konstante einen benannten Verweis machen, weil ich für jede Zeile eines anderen Array-Konstante definiert, bin.
Es fühlt sich an wie ich in C ++ bin stecken w / o eine Art und Weise zu dereferenzieren!
Lösung
Dieser kurze VBA UDF sollte den Job.
Public Function ToArray(rngCell As Range) As Variant
Dim sFormString As String
sFormString = rngCell.Formula
Dim adReturn() As Double
ReDim adReturn(1) As Double
If Not Len(sFormString) - 3 > 0 Then
ToArray = adReturn
Exit Function
Else
sFormString = Mid(sFormString, 3, Len(sFormString) - 3)
End If
Dim vTest As Variant
vTest = Split(sFormString, ",")
ReDim adReturn(LBound(vTest) To UBound(vTest)) As Double
Dim iArrayCounter As Integer
For iArrayCounter = LBound(vTest) To UBound(vTest)
adReturn(iArrayCounter) = vTest(iArrayCounter)
Next iArrayCounter
ToArray = adReturn
End Function
(Wenn die Zeichenfolge mit den geschweiften Klammern sind in Zelle b2 zum Beispiel alles, was Sie brauchen in einer anderen Zelle schreiben = sum (toArray (b2)))
Andere Tipps
ist, eine Zelle zu einem einzigen Zahl, eine Zeichenfolge, logischen oder Fehlerwert begrenzt. Eine einzelne Zelle kann eine Anordnung enthalten. Wenn die Formel „= {1,2,3}“ in einer einzelnen Zelle Formel ausgewertet, so wird die Zelle nur den ersten Wert aus dem Array erhalten.
Sie können das Array-Konstante machen eine benannte Array-Konstante, indem Sie einen Namen definieren (zB Test) wie folgt:
={1,2,3}
dann verweisen auf den Namen
=SUM(test)