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!

War es hilfreich?

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top