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.

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
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)
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.
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
...
Antworten Top
#7
(17.09.2022, 07: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.
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