Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Beschränkte Spillfähigkeit neuer Funktionen
#1
Angenommen, ich habe folgendes (A1:A3):

A B C D
E F
G H I

Mit
B1: =GLÄTTEN(TEIL(WECHSELN(A1:A3;" ";WIEDERHOLEN(" ";99));SEQUENZ(;26;1;99);99))

wird daraus B1:AA3, also aufgeteilte Zellen, und das gleichzeitig gespillt, so dass es auch mit dem Spill A1# statt mit den Daten A1:A3 klappen würde.

Habt Ihr eine Lösung für TEXTTEILEN?

=NACHSPALTE(A1:A3;LAMBDA(a;TEXTTEILEN(a;" "))) ergibt #KALK!
=NACHZEILE(A1:A3;LAMBDA(a;TEXTTEILEN(a;" "))) ergibt #KALK!
=TEXTTEILEN(NACHZEILE(A1:A3;LAMBDA(a;a));" ") ergibt nur A;E;G
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#2
Moin,

TEXTTEILEN liefert ein Array und Excel kann nicht mit Arrays in Arrays umgehen. Folgende Formel umgeht das Problem...

PHP-Code:
B1=WENNFEHLER(WEGLASSEN(REDUCE("";$A$1:$A$3;LAMBDA(A;V;VSTAPELN(A;TEXTTEILEN(V;" "))));1);""

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
#3
Das hatten wir doch schon einmal, LCohen, bin jetzt nur zu faul zum suchen. Wink
Syntax (entscheidendes markiert):

=TEXTTEILEN(text,col_delimiter,[row_delimiter],[ignore_empty], [match_mode], [pad_with])

Also ein "echter" 2D-Splill!
Völlig verblödetes Beispiel (aber so kennst Du mich ja):
ABC
16aädägeödähöshäwsa
17d
18ged
19hsh
20ws

ZelleFormel
B16=TEXTTEILEN(A16;"ö";"ä";;;"")

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
Dankeschön Euch beiden! RPP63 gab die Anregung zu meinem Beispiel: =TEXTTEILEN(TEXTVERKETTEN("°";;A1:A3);" ";"°";;;"")

maninwebs Lösung kommt dann bei einer Gesamtlänge inkl. Trennern von >32k zum Tragen. Daher sollte man daraus ein LAMBDA TEXTTEILEN.2D definieren.

Übrigens sehe ich bei maninweb in seiner Lösung erstmals VSTAPELN über einen Bereich stapelnd, statt nur einzeln stapelnd. Sehr wertvoll! (habs noch nicht kapiert und schlafe erst mal)
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#5
Ich habe nun die schöne Idee von maninweb auf automatisches TEXTTEILEN je nach Spalte oder Zeile angepasst:

Namen definieren
TEXTTEILEN.2D
bezieht sich auf
=LAMBDA(q;dd;
LET(d;WENN(WURDEAUSGELASSEN(dd);" ";dd);
WENNFEHLER(WEGLASSEN(REDUCE("";q;LAMBDA(A;V;WENN(SPALTEN(q)=1;
VSTAPELN(A;TEXTTEILEN(d&V;d;));
HSTAPELN(A;TEXTTEILEN(d&V;;d)))));1;1);"")))


Aus A1: ={"A B";"C";"D E F"} wird nun mit =TEXTTEILEN.2D(A1#;)
A B
C
D E F

Aus A1: ={"A B"."C"."D E F"} wird nun mit =TEXTTEILEN.2D(A1#;)
A C D
B   E
    F

Man könnte auch mit MTRANS/VSTAPELN statt VSTAPELN/HSTAPELN arbeiten.

Zum WURDEAUSGELASSEN irritiert mich, dass ich den Argumenttrenner (bei meiner derzeitigen Version 2210 - 15709-20000 Klick-und-Los) beim Aufruf der Funktion trotzdem angeben muss, sonst kommt #WERT!. War das nicht schon mal anders?

Bestimmt bekommt maninweb die so erweiterte Funktion noch hübscher hin.

Habt Ihr schon bemerkt, dass MS im deutschen Excel 365 aus dem Name Manager im Ribbon eine Name Manager*in gemacht hat, den Dialog dann jedoch mit Namens-Manager betitelt? Völliges "Kraut-und-Rüben" zwischen engl. und dt.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#6
"Echt optionales" Argument: Ich habe es wiedergefunden; es muss zusätzlich zum WURDEAUSGELASSEN noch in [eckigenKlammern] spezifiziert sein.

Namen definieren
TEXTTEILEN.2D
bezieht sich auf
=LAMBDA(q;[dd];
LET(d;WENN(WURDEAUSGELASSEN(dd);" ";dd);
WENNFEHLER(WEGLASSEN(REDUCE("";q;LAMBDA(A;V;WENN(SPALTEN(q)=1;
VSTAPELN(A;TEXTTEILEN(d&V;d;));
HSTAPELN(A;TEXTTEILEN(d&V;;d)))));1;1);"")))


Aus A1: ={"A B";"C";"D E F"} wird nun mit =TEXTTEILEN.2D(A1#)
A B
C
D E F
...
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#7
(17.09.2022, 08:46)LCohen schrieb: Habt Ihr schon bemerkt, dass MS im deutschen Excel 365 aus dem Name Manager im Ribbon eine Name Manager*in gemacht hat, den Dialog dann jedoch mit Namens-Manager betitelt? Völliges "Kraut-und-Rüben" zwischen engl. und dt.

Yepp, haben wir!
Mourad sogar eher als ich, er hat es MS bereits vor meiner Glosse gemeldet.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
Moin,

LCohen, ich denke mal, Du hast das Optimum bei Deiner TEXTTEILEN.2D schon rausgeholt.

Ansonsten hätte ich noch eine weitere LAMBDA-Funktion, die jetzt etwas anders aufteilt, als Deine.
Teilt einen Bereich auf und berücksichtigt dabei Leerzellen. Gerne optimierbar.

PHP-Code:
A1={"A-B-C-D"."E-F-G"."1-2";"H-I".""."3";"J-K-L"."M-N"."4-5"

Und die LAMBDA-Funktion:

PHP-Code:
=LAMBDA(Data;[Separator];LET(
 
T;WENN(WURDEAUSGELASSEN(Separator);" ";Separator);
 
H;NACHSPALTE(Data;LAMBDA(A;MAX(LÄNGE(WECHSELN(A;T;"")))));
 
M;MATRIXERSTELLEN(ZEILEN(Data);SPALTEN(Data);LAMBDA(X;Y;LET(N;LÄNGE(WECHSELN(INDEX(Data;X;Y);T;""));P;INDEX(H;1;Y);Q;WENN(N<>P;WENN(N<1;P-1;P-N);0);INDEX(Data;X;Y)&WIEDERHOLEN(T;Q))));
 
D;NACHZEILE(M;LAMBDA(A;TEXTVERKETTEN(T;0;A)));
 
WENNFEHLER(WEGLASSEN(REDUCE("";D;LAMBDA(A;V;VSTAPELN(A;TEXTTEILEN(V;T))));1);"")))(A1#;"-") 

Ergibt dann, mit x = leere Zellen ...

Code:
A   B   C   D   E   F   G   1   2
H   I   x   x   x   x   x   3   x
J   K   L   x   M   N   x   4   5

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
#9
Sehr schön (viele neue Funktionen verwendet)!

Meine Funktion gibt übrigens auch etwas (mit Leerzellen) zurück, wenn ZEILEN und SPALTEN von A1# beide >1. Zufällig ist es jedoch anders angeordnet.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#10
Hallo,

LCohen, Danke. Ja, hatte ich bemerkt, dass Deine Funktion auch Leerzellen zurückgibt, wie hier unten aufgeführt.
Mir war aufgefallen, dass Du die Aufteilung in Spalten generierst, wenn mehr als eine Spalte vorhanden ist und
ich war dann davon ausgegangen, dass Du einen Grund dafür hattest. Deswegen hatte ich dann meine
gepostet mit einer anderen Anordnung. Somit gibt's beides.

Code:
A1={"A-B-C-D"."E-F-G"."1-2";"H-I".""."3";"J-K-L"."M-N"."4-5"}
Code:
A   E   1   H   x   3   J   M   4
B   F   2   I   x   x   K   N   5
C   G   x   x   x   x   L   x   x
D   x   x   x   x   x   x   x   x

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


Gehe zu:


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