Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[LAMBDA] MATRIXERSTELLEN
#1
Moin,

MATRIXERSTELLEN ist eine sehr interessante Funktion. Denn diese Funktion erspart einem zum Beispiel das Erstellen einer rekursiven LAMBDA-Funktion
zum Füllen einer Matrix. Also meines Erachtens liefert MATRIXERSTELLEN dann die 3-e Dimension.

Ich hab's mal einem Beispiel ausprobiert. Und zwar hatte ich eine bzw. mehrere Funktionen erstellt, die für ein Sudoku die Anzahl der Pärchen ermitteln
sollte (Bild hier unten mit Beispielpärchen). So sah dann, runtergebrochen, die Formel mit konventionnellen LAMBDAs aus:

PHP-Code:
=LAMBDA(Matrix;LET(
 
fnRow;LAMBDA(Value;Height;AUFRUNDEN(Value/Height;0));
 
fnColumn;LAMBDA(Value;Width;WENN(REST(Value;Width)>0;REST(Value;Width);Width));
 
fnPairsGet;LAMBDA(Matrix;LET(S;SEQUENZ(ZEILEN(Matrix);SPALTEN(Matrix)-1);R;
 
fnRow(S;SPALTEN(Matrix)-1);C;fnColumn(S;SPALTEN(Matrix)-1);M;INDEX(Matrix;R;C)&INDEX(Matrix;R;C+1);--M));
 
fnPairs;LAMBDA(This;Pairs;Matrix;Iteration;WENN(Iteration>0;
 
This(This;Pairs;Matrix*LET(M;SEQUENZ(ZEILEN(Matrix);SPALTEN(Matrix));R;
 
fnRow(M;SPALTEN(M));C;fnColumn(M;SPALTEN(M));T;"."&TEXTVERKETTEN(".";1;Pairs)&".";V;"."&INDEX(Pairs;R;C)&".";
 
WENN(M=Iteration;(LÄNGE(T)-LÄNGE(WECHSELN(T;V;"")))/LÄNGE(V);1));Iteration-1);Matrix));
 
vnResult;fnPairs(fnPairs;fnPairsGet(Matrix);SEQUENZ(ZEILEN(Matrix);SPALTEN(Matrix)-1;1;0);
 
ZEILEN(Matrix)*SPALTEN(Matrix));vnResult))($A$2:$I$10

Wie zu sehen, nutzt die Formel ein rekursives LAMBDA, um die Elemente der Matrix mit der Anzahl der Pärchen zu füllen. Damit das klappte,
musste ich zudem eine Verkettung von Texten nehmen, um die Werte zu ermitteln.

Und so sieht nun das Ganze mit MATRIXERSTELLEN aus:

PHP-Code:
=LAMBDA(Matrix;LET(
 
fnPairs;LAMBDA(Matrix;LET(R;ZEILEN(Matrix);C;SPALTEN(Matrix);
 
A;MATRIXERSTELLEN(R;C-1;LAMBDA(R;C;INDEX(Matrix;R;C)&INDEX(Matrix;R;C+1)));
 
M;MATRIXERSTELLEN(R;C-1;LAMBDA(R;C;SUMMENPRODUKT(--(A=INDEX(A;R;C)))));M));
 
vnResult;fnPairs(Matrix);vnResult))($A$2:$I$10

Nur wenige Zeilen und wie zu sehen, eine deutliche Reduktion. Cool, wirklich cool, was das Excel-Team da zur Verfügung gestellt hat.

   

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top
#2
Wow, ich war im Urlaub - und dann das! Damit klappt dann auch das ent-CRYPT-en von Rangeverschlüsselungen ohne MATRIXZUTEXT und AUSWERTEN.

Gibt es noch mehr eingebaute Funktionen für "nur Lambda", die nicht in der Excel-Funktionsliste auftauchen? EDIT: shift-del/maninweb hier.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste