Spaltensumme als Matrixformel - die Berechnung des Nettobarwerts einer Tabelle

Gepostet am: Jan 31, 2011 10:56:15 AM

Wer die Spaltensumme einer Matrix bilden möchte kann ja bekanntlicherweise die Summe über die einzelnen Spalten bilden und diese nach rechts ziehen. Soweit die Standardlösung. Aber es geht auch mit sogenannten Matrixformeln

"normale" Matrixlösung

Zelle

A3-C3

A4-C4

Formel

{=$A$1:$C$1+$A$2:$C$2}

{=SUMME(INDEX($A$1:$C$2;;SPALTE($1:$1)))}

Achtung, Matrixformel enthalten!

Die geschweiften Klammern{} werden nicht eingegeben.

Verlassen Sie den Zelleneditor mit Strg+Shift + Enter, statt Enter alleine.

Die erste Lösung dieser zwei Lösungsvorschläge kann bei größeren Matrizen zu sehr langen Eingaben führen, da jede Zeile der Matrix eigens eingegeben werden muss. Die zweite Lösung hat in meinen Augen den Nachteil, dass sie nicht sonderlich leicht lesbar ist und die vielen Klammern leicht zu Fehlern führen. Aus diesem Grund habe ich entsprechende Matrix-Formeln für die Spaltensumme und Zeilensumme entwickelt:

VBA-Formeln

Public Function SpaltenSumme(myRange As Range, Optional btrans As Boolean = False) As Variant  Dim iCol As Integer  Dim Ergebnis() As Double  ReDim Ergebnis(myRange.Columns.Count - 1)  For iCol = 1 To myRange.Columns.Count      Ergebnis(iCol - 1) = Application.WorksheetFunction.Sum(myRange.Columns(iCol))  Next  If btrans = False Then      SpaltenSumme = Ergebnis()  Else      SpaltenSumme = Application.WorksheetFunction.Transpose(Ergebnis())  End If  End Function    Public Function ZeilenSumme(myRange As Range, Optional btrans As Boolean = True) As Variant  Dim iRow As Integer  Dim Ergebnis() As Double  ReDim Ergebnis(myRange.Rows.Count - 1)  For iRow = 1 To myRange.Rows.Count      Ergebnis(iRow - 1) = Application.WorksheetFunction.Sum(myRange.Rows(iRow))  Next  If btrans = True Then      ZeilenSumme = Application.WorksheetFunction.Transpose(Ergebnis())  Else      ZeilenSumme = Ergebnis()  End If  End Function

Beispiele für die Anwendung: [Investitionsrechnung - Bruttomethode, stark verkürzt durch Spaltensumme]