Clever-Excel-Forum

Normale Version: [Lambda] SUBSTITUTE.MULTISTRINGS
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Einer geht heute noch:

SUBSTITUTE.MULTISTRINGS(TextString;ChangeReplaceArray)

=LAMBDA(txt;chngrplc;
WENN(ZEILEN(chngrplc)=1;txt;SUBSTITUTE.MULTISTRINGS(
WECHSELN(txt;INDEX(chngrplc;1;1);INDEX(chngrplc;1;2));
INDEX(chngrplc;SEQUENZ(ZEILEN(chngrplc)-1;;2);{1.2}))))


Beispielaufruf:
=SUBSTITUTE.MULTISTRINGS("Heute scheint d. Mond";A1:B3)

mit A1:B2: (links Change, rechts Replace)
Heute Morgen
Mond Sonne


Achtung: Aufgrund der Rekursion kann Zeile 3 nicht angesprungen werden, muss aber im Argument als letzte Zeile ohne Bedeutung enthalten sein! Also A1:B3 statt A1:B2.

Funktionsergebnis:
Morgen scheint d. Sonne

Bin gespannt, ob jemand den Schönheitsfehler mit der abschließend nötigen Leerzeile wegbekommt. Ich bin bei Rekursion immer ziemlich begriffstutzig.
Ich habe WEXELN und SUBSTITUTE.MULTISTRINGS (beides rekursiv ohne LET) jetzt umbenannt:

SUBSTITUTE.CHARS(Text;Search-Zeichenfolge;Replace-Zeichenfolge)
SUBSTITUTE.STRINGS(Text;2-Spalten-Search-Replace-Array)

Damit sind sie eindeutig Kinder von SUBSTITUTE (also WECHSELN).
___________________________

Problem sind zwischenzeitlich Bezeichnungen wie

RAND.UNIQ und
UNIQUE.PARTIAL,

weil UNIQUE eigentlich ja eine Eigenschaft darstellen sollte. EINDEUTIG() müsste also eher BEREICH.EINDEUTIG() heißen. Und UNIQUE.PARTIAL() dann ARRAY.UNIQUE.PARTIAL().