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

)
Für den letzten Teil der Verkettung wollte ich eigentlich auch die Aktuell()-Funktion nutzen, aber sie tat mit nicht den gewünschten Gefallen

.