Microsoft Excel

Herbers Excel/VBA-Archiv

Matrixformel / Summenprodukt?

Betrifft: Matrixformel / Summenprodukt? von: Sebastian
Geschrieben am: 17.10.2020 10:54:55

https://www.herber.de/bbs/user/140930.xlsx

Hallo Forum,
ich habe folgendes Problem, bei dem ich um Eure Mithilfe bitte: Ich möchte in einer Zeitreihe verschiedene Werte miteinander multiplizieren und anschließend addieren. Eigentlich relativ simpel über „Summenprodukt“ oder Matrixformel zu lösen. Aber: einer der drei Werte, die zu multiplizieren sind, ist ein Index. D.h. es müssen zunächst alle Indexwerte über die zurückliegenden Jahre multipliziert werden und das Ergebnis wiederum mit den beiden anderen Faktoren des jeweiligen Jahres multipliziert werden. Und am Ende wieder über alles die Summe gebildet werden. Umständlich zu erklären, daher anbei eine Beispieldatei.
Hat jemand eine Idee?
Vielen Dank vorab und viele Grüße,
Sebastian

Betrifft: AW: zu Deiner Berechnungsvorgabe nachgefragt ...
von: neopa C
Geschrieben am: 17.10.2020 12:23:00

Hallo Sebastian,

... eine Formel dafür habe ich (noch) nicht.
Gemäß Deinen Formeln in D6:E6 müsste dann die Formel in F6 wie folgt aussehen: =C2*C3*(1+C4)*(1+D4)*(1+E4)+D2*D3*(1+D4)*(1+E4)+E2*E3*(1+E4)+F2*F3 oder? Und diese soll dann zu einer nach rechts und links kopierbaren Formel zusammengefasst werden?

Gruß Werner
.. , - ...

Betrifft: AW: zu Deiner Berechnungsvorgabe nachgefragt ...
von: Sebastian
Geschrieben am: 17.10.2020 12:29:48

Hallo Werner,

vielen Dank für Deine schnelle Rückmeldung! Genau, die Formel sollte nach rechts kopierbar sein. Ich hatte ursprünglich versucht mit einer Summenprodukt()-Formel die Bereiche abzudecken. Aber ich bin daran gescheitert, dass innerhalb der Summenprodukt()-Formel ein Array erst durch die Berechnung gebildet werden könnte. Vielleicht hast Du bessere Ideen als ich.

Vielen Dank für Deine Mühen vorab!

VG
Sebastian

Betrifft: AW: nochmal nachgefragt ...
von: neopa C
Geschrieben am: 17.10.2020 12:51:37

Hallo Sebastian,

... Du hast meine Frage bzgl. der aufgezeigten Formel in F6 nicht (eindeutig) beantwortet. Ist diese denn so für F6 so richtig?

Gruß Werner
.. , - ...

Betrifft: AW: nochmal nachgefragt ...
von: Sebastian
Geschrieben am: 17.10.2020 12:58:23

Hallo Werner,

Deine Formel ist absolut korrekt.

VG
Sebastian

Betrifft: AW: nochmal nachgefragt ...
von: Sebastian
Geschrieben am: 17.10.2020 13:09:17

Hallo Werner,

Deine Formel ist absolut korrekt.

VG
Sebastian

Betrifft: AW: nochmal nachgefragt ...
von: Hajo_Zi
Geschrieben am: 17.10.2020 14:14:09

Hallo Debastian,

offen bedeutet es soll noch eine Antwort kommen.
Warum ist dein Beitrag Offen.
Du willst doch was machen. Soll jemand vorbei kommen?

Das ist nur meine Meinung zu dem Thema.

GrußformelHomepage

Betrifft: AW: der therad ist aber noch offen! owT
von: neopa C
Geschrieben am: 17.10.2020 14:15:50

Gruß Werner
.. , - ...

Betrifft: die Formel ist korrekt
von: Hajo_Zi
Geschrieben am: 17.10.2020 14:18:32

Hallo Werner,
Hallo Werner,

Deine Formel ist absolut korrekt.
was ist offen wenn die Formel korrekt ist?

Gruß Hajo

Betrifft: AW: Hajo, lies bitte alles, thread ist offen !
von: neopa C
Geschrieben am: 17.10.2020 14:21:03

Gruß Werner
.. , - ...

Betrifft: AW: Hajo, lies bitte alles, thread ist offen !
von: Hajo_Zi
Geschrieben am: 17.10.2020 14:25:50

Hallo Werner,

ich habe den kompletten Beitrag auf den ich geantwortewt habe kopiert und da Stand nichts von offen.
Du gast auch nicht geschrieben was an diesen wenigen Worten auf offen hinweist.
Hallo Werner,

Deine Formel ist absolut korrekt.
>/pre>

Gruß  _
Hajo


Betrifft: AW: Du hast nicht verstanden, um was es geht! owT
von: neopa C
Geschrieben am: 17.10.2020 14:27:54

Gruß Werner
.. , - ...

Betrifft: der ist teflonbeschichtet....
von: Werner
Geschrieben am: 17.10.2020 15:02:37

Hallo Namensvetter,

...an dem perlt alles ab, jedes Wort sinnlos. Ich hab schon lange aufgegeben.

Gruß Werner

Betrifft: AW: ich hätte momentan eine Hilfszeilenlösung ...
von: neopa C
Geschrieben am: 17.10.2020 14:38:16

Hallo Sebastian,

... dazu habe ich vor die Spalte mit dem Jahr 2020 auch noch eine leere Hilfsspalte eingefügt.

Dann folgende Formel in C11:

=WENN(ZEILE(B1)>ANZAHL($A$1:C$1);0;(INDEX($A:$Z;2;ZEILE(C3))*INDEX($A:$Z;3;ZEILE(C3))) *WENN((ZEILE(B1)=ANZAHL($A$1:C$1));1;PRODUKT(INDEX((1+INDEX($4:$4;ZEILE(C3)):B$4);))))


Die Formel weit genug nach unten und nach rechts (momentan für eine Auswertung bis 2043) ziehend kopieren.

Dann in C6: =SUMME(C11:C34) und diese Formel nach rechts ziehend kopieren.

Gruß Werner
.. , - ...

Betrifft: AW: Warum so umständlich?
von: Sulprobil
Geschrieben am: 17.10.2020 16:50:39

Eine Formellösung: in der Originaldatei
C6: =B2*b3
D6: =B6*(1+B4)+C2*C3
und dann D6 nach rechts kopieren.

Betrifft: AW: weil ich mich einfach verrannt hatte owT
von: neopa C
Geschrieben am: 17.10.2020 17:01:20

Gruß Werner
.. , - ...

Betrifft: AW: Warum so umständlich?
von: Sebastian
Geschrieben am: 18.10.2020 22:29:06

Vielen Dank an Werner und Sulprobil für Eure schnelle Hilfe! Ich bin immer wieder beeindruckt, wie gut dieses Forum funktioniert.

@Sulprobil: Deine Lösung finde ich extrem charmant. Klappt wunderbar. Nochmals vielen Dank! Eine Nachfrage: Der Index soll nur angewendet werden, wenn der indexierte Wert vom Vorjahr noch kleiner ist als der aktuelle Wert der Population. Beispiel: Nicht-indexierter Wert des Vorjahres = 13, Index ist 5%, d.h. der indexierte Wert in diesem Jahr ist 13,65. Das ist kleiner als 14 (nicht-indexierter Wert des aktuellen Jahres), d.h. er soll 13,65 nehmen. Falls das größer als 14 gewesen wäre, soll 14 genommen werden. Mir ist es leider nicht gelungen, Deine Function entsprechend anzupassen.

Betrifft: AW: Neue Lösung
von: Sulprobil
Geschrieben am: 19.10.2020 10:32:48

Diese Datei wird ohne jede Gewährleistung zur Verfügung gestellt, aber ich verwende einen aktuellen Virenscanner.
https://www.herber.de/bbs/user/140967.xlsm

Betrifft: AW: Neue Lösung
von: Sebastian
Geschrieben am: 19.10.2020 11:49:35

Perfekt, vielen Dank für Deine Hilfe!!!

Betrifft: AW: Neue Lösung
von: Sebastian
Geschrieben am: 19.10.2020 11:49:44

Perfekt, vielen Dank für Deine Hilfe!!!

Betrifft: AW: Matrixformel / Summenprodukt?
von: Sulprobil
Geschrieben am: 17.10.2020 16:35:12

Function Entwicklung_mit_Indexierung(rFlaeche As Range, rPopulation As Range, rIndex As Range)  _
As Variant
Dim i As Long, d As Double
ReDim v(1 To rFlaeche.Count) As Variant
For i = 1 To rFlaeche.Count
    If i > 1 Then d = d * (1# + rIndex(i - 1))
    d = d + rFlaeche(i) * rPopulation(i)
    v(i) = d
Next i
Entwicklung_mit_Indexierung = v
End Function
Dann als Matrixformel in B6:K6 eingeben:
=Entwicklung_mit_Indexierung(B2:K2;B3:K3;B4:K4)

Anbei meine Beispieldatei ohne jede Gewährleistung, aber ich verwende einen aktuellen Virenscanner:
https://www.herber.de/bbs/user/140937.xlsm