Seite 1 von 1

Re: Summe der Werte einer Zeile passend zu einem Wert

Verfasst: Mo, 04.08.2014 23:30
von Bockenheimer
Hi,
ich glaube, hier musst du dich noch ein bisschen deutlicher ausdrücken. Okay: 118+18 ist 136. Aber was hat das mit Zeile 9 zu tun und den Ziffernreihen deines Beispiels...?
Gruß
Bockenheimer

Re: Summe der Werte einer Zeile passend zu einem Wert

Verfasst: Di, 05.08.2014 00:10
von mikeleb
Hallo,

das Problem ist nicht so einfach zu lösen, auch wenn es auf den ersten Blick so aussieht.
Ich hoffe, es nun gelöst zu haben (und richtig verstanden :) ).

Re: Summe der Werte einer Zeile passend zu einem Wert

Verfasst: Di, 05.08.2014 12:05
von mikeleb
Hallo,

nochmal ich ...
Ich habe die Sache (Summenzerlegung) der Übersichtkeit halber mal auf drei Spalten verteilt und optisch etwas aufgehübscht 8) .

Re: Summe der Werte einer Zeile passend zu einem Wert

Verfasst: Di, 05.08.2014 20:20
von mikeleb
Hallo,

das Teil ist so Schritt für Schritt gewachsen. Beim Nochmaligen 'drüberschauen konnte ich sie noch etwas vereinfachen.
Die Matrixformel in ihrer ganzen „Schönheit“:
{=VERKETTEN("= ";VERSCHIEBUNG(A1;0;MIN(WENN(ISTFEHLER(VERGLEICH((AG1-(A1:AF1));A1:AF1;0));33;SPALTE(A1:AF1)))-1);WENN(AKTUELL()=AG1;"";VERKETTEN(" + ";AG1-VERSCHIEBUNG(A1;0;MIN(WENN(ISTFEHLER(VERGLEICH((AG1-(A1:AF1));A1:AF1;0));33;SPALTE(A1:AF1)))-1))))}

Etwas zerhackt:

=VERKETTEN(
"= ";
VERSCHIEBUNG(A1;0;MIN(WENN(ISTFEHLER(VERGLEICH((AG1-(A1:AF1));A1:AF1;0));33;SPALTE(A1:AF1)))-1);
WENN(
Bedingung AKTUELL()=AG1; Die Formel liefert bis hierher den Wert aus AG1, es gibt es keine mögliche Summe.
dann "";
sonst VERKETTEN(
" + ";
AG1-VERSCHIEBUNG(A1;0;MIN(WENN(ISTFEHLER(VERGLEICH((AG1-(A1:AF1));A1:AF1;0));33;SPALTE(A1:AF1)))-1)
)
)
)

Kernstück des Ganzen ist die Funktion :
VERSCHIEBUNG(A1;0;MIN(WENN(ISTFEHLER(VERGLEICH((AG1-(A1:AF1));A1:AF1;0));33;SPALTE(A1:AF1)))-1)
und darin wiederum die (eigentliche) Matrixfunktion:
WENN(ISTFEHLER(VERGLEICH((AG1-(A1:AF1));A1:AF1;0));33;SPALTE(A1:AF1)))

Das Teil auseinandergedröselt:
1. Schritt: (AG1-(A1:AF1))
Bilde nacheinander die Differenz aus AG1 und jedem einzelnen Wert aus A1:AF1
→ Ergebnis ist eine einzeile Matrix mit den Differenzwerten
2. Schritt: VERGLEICH((AG1-(A1:AF1));A1:AF1;0)
Vergleiche die Differenzen mit den Werten aus A1:AF1
3. Schritt: WENN(ISTFEHLER(VERGLEICH((AG1-(A1:AF1));A1:AF1;0));33;SPALTE(A1:AF1))
Wenn die Differenz nicht gefunden wird, dann nimm Spalte Nr. 33, sonst die Spalte in der die Differenz gefunden wurde.
→ Ergebnis ist eine einzeile Matrix mit den Spaltenwerten (meistens also 33)
4. Schritt: MIN(WENN(ISTFEHLER(VERGLEICH((AG1-(A1:AF1));A1:AF1;0));33;SPALTE(A1:AF1)))
Wähle das Minimum der Spaltenwerte, d. h. wenn es keine Summezerlegung gibt bleibt es bei 33 ansonsten im Beispiel der 1. Zeile den Wert 19
5. Schritt: VERSCHIEBUNG(A1;0;MIN(WENN(ISTFEHLER(VERGLEICH((AG1-(A1:AF1));A1:AF1;0));33;SPALTE(A1:AF1)))-1)
Nimm den Wert aus der Zelle, die von A1 aus um den (um 1 reduzierten) Spaltenwert verschoben ist.
Im Beispiel „rutschen“ wir von A1 um 18 nach rechts zu A19 und erhalten den Wert 36.


Ich hoffe, das ist so halbwegs nachvollziebar... (Zwischenzeitlich habe ich auch nicht mehr durchgesehen :shock: )
Für den letzten Teil der Verkettung wollte ich eigentlich auch die Aktuell()-Funktion nutzen, aber sie tat mit nicht den gewünschten Gefallen :? .

Re: Summe der Werte einer Zeile passend zu einem Wert

Verfasst: Di, 05.08.2014 22:23
von mikeleb
Hallo HeritzP,

mir hilft an der Stelle immer, die Zwischenergebnisse sichtbar zu machen (siehe Anhang).