Summe wenn dann

Hallo
ich habe folgende Tabelle:
$ Sydney Bangkok Munich
1098 1
1234 3
10000 0,5
1111 0,5 1 2

Ich möchte jetzt folgendes haben:
Sydney: 1098 (Berechnung 1*1098)
Bangkok 6111 (Berechnung 0,5*10000 + 1*1111)
Munich 5924 (Berechnung 3*1234 + 2*1111)

Wie kann ich das hinbekommen?

Danke
Herbie

SUMMENPRODUKT
Hallo naiver,

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).

Viele Grüße :o)
-Rob.

Sydney: 1098 (Berechnung 1*1098)
Bangkok 6111 (Berechnung 0,5*10000 + 1*1111)
Munich 5924 (Berechnung 3*1234 + 2*1111)

Hallo Herbie,

benutze den Pret-Tag, wird unterhalb des Eingabefensters erläutert, gibt auch einen Button dafür oberhalb des Fensters.

Tabellenblatt: [Mappe1]!Tabelle1
 │ A │ B │ C │ D │
──┼───────┼────────┼─────────┼────────┤
1 │ $ │ Sydney │ Bangkok │ Munich │
──┼───────┼────────┼─────────┼────────┤
2 │ 1098 │ 1 │ │ │
──┼───────┼────────┼─────────┼────────┤
3 │ 1234 │ │ │ 3 │
──┼───────┼────────┼─────────┼────────┤
4 │ 10000 │ │ 0,5 │ │
──┼───────┼────────┼─────────┼────────┤
5 │ 1111 │ │ 1 │ 2 │
──┼───────┼────────┼─────────┼────────┤
6 │ │ 1098 │ 6111 │ 5924 │
──┴───────┴────────┴─────────┴────────┘
Benutzte Matrixformeln:
B6: {=SUMME(($A$2:blush:A$5)\*(B2:B5))}
C6: {=SUMME(($A$2:blush:A$5)\*(C2:C5))}
D6: {=SUMME(($A$2:blush:A$5)\*(D2:smiley:5))}
(Matrixformeln nicht mit "Enter" sondern mit "Strg+Shift+Enter" eingeben.
Die Spezialklammern nicht manuell eingeben, sie werden von Excel erzeugt.)

A1:smiley:6
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Gruß
Reinhard

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

Danke
Herbie

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.

Hallo Herbie,

du meinst so:

Tabellenblatt: [Mappe1]!Tabelle1
 │ A │ B │ C │ D │
──┼─────────────┼────────┼─────────┼────────┤
1 │ $ │ Sydney │ Bangkok │ Munich │
──┼─────────────┼────────┼─────────┼────────┤
2 │ 1000 98 │ 1 │ │ │
──┼─────────────┼────────┼─────────┼────────┤
3 │ 1230 4 │ │ │ 3 │
──┼─────────────┼────────┼─────────┼────────┤
4 │ 9999 1 │ │ 0,5 │ │
──┼─────────────┼────────┼─────────┼────────┤
5 │ 1000 100 11 │ │ 1 │ 2 │
──┼─────────────┼────────┼─────────┼────────┤
6 │ │ 1098 │ 6111 │ 5924 │
──┴─────────────┴────────┴─────────┴────────┘
Benutzte Formeln:
B6: =berechne()
C6: =berechne()
D6: =berechne()

A1:smiley:6
haben das Zahlenformat: Standard

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

Gruß
Reinhard