Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
15.09.2022, 18:40
(Dieser Beitrag wurde zuletzt bearbeitet: 15.09.2022, 18:43 von LCohen.)
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
Registriert seit: 08.05.2014
Version(en): Office 2010, Office 365, Office 365 Betakanal
16.09.2022, 12:14
(Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2022, 12:15 von maninweb.)
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 Awardshttps://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Das hatten wir doch schon einmal, LCohen, bin jetzt nur zu faul zum suchen. 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): | A | B | C | 16 | aädägeödähöshäws | a | | 17 | | d | | 18 | | ge | d | 19 | | h | sh | 20 | | ws | |
Zelle | Formel | 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)
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
17.09.2022, 00:15
(Dieser Beitrag wurde zuletzt bearbeitet: 17.09.2022, 00:26 von LCohen.)
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)
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
17.09.2022, 08:46
(Dieser Beitrag wurde zuletzt bearbeitet: 17.09.2022, 08:59 von LCohen.)
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.
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
17.09.2022, 09:57
(Dieser Beitrag wurde zuletzt bearbeitet: 17.09.2022, 10:04 von LCohen.)
"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 ...
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
(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)
Registriert seit: 08.05.2014
Version(en): Office 2010, Office 365, Office 365 Betakanal
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 Awardshttps://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
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.
Registriert seit: 08.05.2014
Version(en): Office 2010, Office 365, Office 365 Betakanal
17.09.2022, 15:21
(Dieser Beitrag wurde zuletzt bearbeitet: 17.09.2022, 15:22 von maninweb.)
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 Awardshttps://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
|