ah, anhand des Posting-Quelltextes erkenne ich, daß ich Deine Frage richtig erraten habe. Aber für alle Mitleser formatiere ich mal um:
A B C D
1|$ Sydney Bangkok Munich
2|1098 1
3|1234 3
4|10000 0,5
5|1111 (0,5) 1 2
6|
7|Summe 1098 6111 5924
Die 0,5 bei Sydney sind wohl ein Irrtum.
Die Formel in den Summen lautet (für die Zelle unter Sydney):
=SUMMENPRODUKT((B2:B50)\*B2:B5\*$A2:blush:A5)
Die Formel ziehst Du einfach nach rechts unter die anderen Spalten.
Erklärung: =SUMMENPRODUKT summiert die Produkte aller zeilen- oder spaltenweisen Multiplikation der angegebenen Arrays (Bereiche), hier also x*B2*A2 + x*B3*A3 + x*B4*A4 … Das x steht hier für den ersten Term in der Funktion und ist entweder 1 oder 0, je nachdem, ob die Bedingung B…0 erfüllt ist (WAHR = 1) oder nicht (FALSCH = 0).
super geht, danke
aber jetzt habe ich noch ein Problem
Anstelle von einem $ Betrag habe ich zwei $ Beträge:
Also nicht:
1098
1234
Sondern
998 333
123 345
Diese beiden will ich addieren und dann die Matrixformel ausführen.
Klar, ich kann eine zusätzliche spalte machen, aber aus neugier würde ich gerne wissen, ob es auch direkt geht, ohne zusätzliche Spalte
Tabellendarstellung erreicht mit dem Code in FAQ:2363
Ja das geht, vorher mußt du einmalig Alt+F11 drücken, Einfügen—Modul, nachstehenden Code reinkopieren und Editor schließen.
Gruß
Reinhard
Option Explicit
Function Berechne()
Dim Zei As Long, Spa As Long
Spa = Application.Caller.Column
For Zei = 2 To Cells(1, 1).End(xlDown).Row
If Cells(Zei, Spa).Value "" Then
Berechne = Berechne + Cells(Zei, Spa).Value \* FSumme(Zei)
End If
Next Zei
End Function
Function FSumme(Zei) As Double
Dim Teil, S As Integer
Teil = Split(Cells(Zei, 1).Value, " ")
For S = 0 To UBound(Teil)
FSumme = FSumme + CDbl(Teil(S))
Next S
End Function