Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
17.03.2022, 20:38
(Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2022, 20:43 von LCohen.)
Ja, schon. Wobei die ganzen Array-Manipulationen jetzt die Leute davon befreien, ein bisschen zu denken und zu rechnen (z.B. hier vor 15 Jahren). Das Programm soll ja auch Zeit sparen. Also: Einerseits etwas "niederschwellig", aber doch "berechtigt". TEXTTRENNEN ist natürlich wichtig. Funktioniert es denn auch 2D? TEXTVERKETTEN funktioniert nur mit NACHZEILE 2D, aber das ist ja auch begründet. Ich würde auch dort lieber ein weiteres Argument NACHZEILE oder NACHSPALTE direkt in der Funktion sehen. Bin mal gespannt, ob man sich die Dinger alle merken kann. Das war mit INDEX/ZEILE/SPALTE/REST/KÜRZEN alles leistbar, und der Funktionsschatz reichte aus. Wir steuern also von "Wer zaubert die passende Formel?" Richtung "Wer erinnert den Namen des richtigen Tools?".
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
21.03.2022, 03:12
(Dieser Beitrag wurde zuletzt bearbeitet: 21.03.2022, 03:15 von LCohen.)
Habe mir nun das 100minütige Jon-Acampora-Video "14 new Excel Functions" angeschaut.
Die Funktionen haben nun doch alle ihre Berechtigung für mich.
OT: Kleine Neuigkeit für mich, was SPILL-Verbünde anbelangt (sah ich dort):
A1: ={1;2;3} B1: leer C1: ={4;5;6;7}
E1: =A1#:C1 ergibt 1 0 4 2 0 5 3 0 6
E1: =A1#:C1# ergibt 1 0 4 2 0 5 3 0 6 0 0 7
E1: =A1:C1# ergibt #BEZUG! E1: =(A1:C1)# ergibt #BEZUG!
Nun ballern wir einen horizontalen SPILL dazu:
A6: ={1.2.3.4} H1: =(A1#:C1):A6 oder =(A1#:C1#):A6 ergibt 1 0 4 2 0 5 3 0 6 0 0 7 0 0 0 1 2 3
Ein Verbreiterungsversuch schlägt jedoch fehl: H1:=(A1#:C1#):A6# ergibt #BEZUG!
Jetzt den umgekehrten Weg: H1: =A1#:A6 ergibt 1 2 3 0 0 1
H1: =A1#:A6# ergibt 1 0 4 0 2 0 5 0 3 0 6 0 0 0 7 0 0 0 0 0 1 2 3 4
Letzteres zeigt nebenbei, dass man auch andere Zellinhalte dabei mitnimmt.
Es wird also, egal, wie viele #-Bereiche man verknüpft, maximal immer nur der tatsächliche 2D-Bereich zurückgegeben (oder halt nur 1D). Somit ist physisch immer die Tabelle Grundlage, so wie auch bei BEREICH.VERSCHIEBEN, vor dem man sich daher in LAMBDAs hüten sollte. Daher sind VSTACK und HSTACK so wichtig.
Andere Anmerkungen: =VSTACK(Tab1:Tab52!A1:H99) funktioniert, was es zu einer 3D-Funktion macht. =TEXTTRENNEN() trennt leider keine Spalte, sondern nur eine ZELLE. Somit muss man für das Behandeln z.B. einer gespillten Spalte, genauso wie bei TEXTVERKETTEN, ein NACHZEILE(LAMBDA drumrum setzen. Dafür kann man aber ein Delimiter-Array verwenden, so dass mehrere Trenner gleichzeitig funktionieren. TAKE (AUFNEHMEN) und DROP haben ggü INDEX den Vorteil, dass man damit das Array beschneiden kann, und zwar von allen vier Seiten. Das kürzt die Sache doch erheblich ab.
Folgende(r) 2 Nutzer sagen Danke an LCohen für diesen Beitrag:2 Nutzer sagen Danke an LCohen für diesen Beitrag 28
• Kuwer, maninweb
Registriert seit: 08.05.2014
Version(en): Office 2010, Office 365, Office 365 Betakanal
21.03.2022, 10:59
(Dieser Beitrag wurde zuletzt bearbeitet: 21.03.2022, 11:04 von maninweb.)
Moin, interessante Erkenntnisse! Zu TEXTTRENNEN über eine Spalte, liesse sich das über Umwege erreichen. Die einfachste Variante wäre, den Bereich zu einem Text zu verketten und dann über die Trennzeichen zu gehen. Eine andere, kompliziertere, Variante wäre, DROP, REDUCE (!) und VSTACK zu verwenden. Formeln ... Code: Variante 1 =LET(Daten;$A$2:$A$5;WENNFEHLER(TEXTTRENNEN(TEXTVERKETTEN(ZEICHEN(1);WAHR;Daten);" ";ZEICHEN(1));"-")) Variante 2 =LET(Daten;$A$2:$A$5;DROP(REDUCE("";Daten;LAMBDA(Value;Array; WENNFEHLER(VSTACK(Value;TEXTTRENNEN(Array;" "));"-") ));1))
Und noch eine Variante, die einen mehrspaltigen Bereich berücksichtigt. Das Auffüllen erfolgt von links aus gesehen. Man könnte vielleicht gucken, ob man das Auffüllen so gestaltet, dass die Werte aus Spalte B erst nach denen aus Spalte A gespillt werden, hier im Bild dann ab Spalte H. Code: =LET(Daten;$A$2:$B$5;Trennzeichen;" ";T;WAHL(SEQUENZ(2);Trennzeichen;ZEICHEN(1));M;MATRIXERSTELLEN(ZEILEN(Daten);1; LAMBDA(X;Y;TEXTVERKETTEN(INDEX(T;2;1);WAHR;INDEX(Daten;X;0))));WENNFEHLER(TEXTTRENNEN(TEXTVERKETTEN(ZEICHEN(2);WAHR;M);T;ZEICHEN(2));"-"))
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
21.03.2022, 11:47
(Dieser Beitrag wurde zuletzt bearbeitet: 21.03.2022, 11:51 von LCohen.)
Viele Möglichkeiten bei Dir!
Ohne TEXTTRENNEN war meine letzte Lösung so (mit Leerzeichen als Default und Autoorientierung Spalte/Zeile):
=LAMBDA(x;[tt];LET( t;WENN(ODER(WURDEAUSGELASSEN(tt);tt="");" ";tt); u;ZEICHEN(1); y;MAX(LÄNGE(x)-LÄNGE(WECHSELN(x;t;))+1); z;WENN(SPALTEN(x)=1;SEQUENZ(;y);SEQUENZ(y)); f;LAMBDA(g;FINDEN(u;WECHSELN(t&x&u;t;u;z+g))); WECHSELN(TEIL(x;f(0);f(1)-f(0));t;)))({"Dies ist Satz 1";"und dies ist Satz Ende Gelände"})
({"Dies ist Satz 1"."und dies ist Satz Ende Gelände"}) mit Punkt statt Semikolon entsprechend!
Mit TEXTTRENNEN hätte ich mir wenigstens folgendes gewünscht:
=NACHZEILE({"Dies ist Satz 1";"und dies ist Satz Ende Gelände"};LAMBDA(a;TEXTTRENNEN(a;" ")))
Klappt aber nicht (auch nicht mit gleichanzahligen Spalten). Bei TEXTVERKETTEN geht NACHZEILE hingegen:
=NACHZEILE({"Dies"."ist"."Satz"."1".""."";"und"."dies"."ist"."Satz"."Ende"."Gelände"};LAMBDA(a;TEXTVERKETTEN(" ";;a)))
Registriert seit: 08.05.2014
Version(en): Office 2010, Office 365, Office 365 Betakanal
Moin, stimmt, NACHZEILE wäre ja eigentlich das naheliegenste. Habe auch mal was rumprobiert, z.B. statt a dann INDEX(A;0;{1.2.3}) nehmen bringt auch nichts. Hatte übrigens auch mal eine ähnliche LAMBDA zu Deiner Version ohne TEXTTRENNEN erstellt und diese ARRAY.SPLIT genannt. Wäre mit den aktuellen Funktionen wohl zu kompliziert. 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
22.03.2022, 11:47
(Dieser Beitrag wurde zuletzt bearbeitet: 22.03.2022, 11:47 von LCohen.)
Manchmal fragt man sich, ob bei Microsoft (immer) richtige Softwareentwickler am Werk sind.
Also solche, die nach allen Regeln der Kunst agieren, mit ordentlichen Datentypen, Feldern, Alternativen usw. Denn man vergesse nicht: Die Suite MS 365 ist wahrscheinlich schon 100 Mio mal in Gebrauch und vermutlich das häufigste Bezahlprogramm auf der ganzen Welt. Eigentlich könnte MS die Leute mit Gold bezahlen.
Auch die Entscheider, die einige Funktionen übersetzen und andere nicht. Was soll das?
Denn das kann doch so nicht wahr sein! Man ist seit 4 Jahren SPILLend unterwegs, und dann wird die höchst SPILL-bedürftige TEXTTRENNEN-Funktion einfach stumpf statisch gebaut.
TEXTVOR/TEXTNACH können es übrigens mit NACHZEILE:
=NACHZEILE(A11:A14;LAMBDA(a;TEXTVOR(a;" ";2))) =NACHZEILE(A11:A14;LAMBDA(a;TEXTNACH(a;" ";2)))
Und jetzt kommt's: Sogar ohne!
=TEXTVOR(A11:A14;" ";2) =TEXTNACH(A11:A14;" ";2)
Daraus ein schnelles TEXTTRENNEN gebastelt:
=LET(x;A6:A9;z;" ";y;SEQUENZ(;MAX(LÄNGE(x)-LÄNGE(WECHSELN(x;z;)))+1);WENNFEHLER(TEXTNACH(TEXTVOR(z&x&z;z;y+1);z;y);""))
Folgende(r) 2 Nutzer sagen Danke an LCohen für diesen Beitrag:2 Nutzer sagen Danke an LCohen für diesen Beitrag 28
• PIVPQ, maninweb
Registriert seit: 08.05.2014
Version(en): Office 2010, Office 365, Office 365 Betakanal
22.03.2022, 19:37
(Dieser Beitrag wurde zuletzt bearbeitet: 22.03.2022, 19:43 von maninweb.)
Hallo,
Übersetzungen müssten meines Wissens noch erfolgen, da ja noch Beta. In anderen Sprachen ist das auch noch nicht vollständig übersetzt. TEXTTRENNEN liefert ein Array nach dem Splitten eines Textes. Das heißt, dass ein Bereich in TEXTTRENNEN ein Ergebnis liefert, das ein Array von Arrays ist. Damit kann Excel nicht umgehen (Limitierung).
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
22.03.2022, 20:40
(Dieser Beitrag wurde zuletzt bearbeitet: 22.03.2022, 20:51 von LCohen.)
Hast Du meine Funktion SPLIT ( Code 2 und Code 3) denn noch nicht ausprobiert? Denn da ist doch genau das möglich (aus einem Vektor wird ein Array; die Funktion erkennt sogar die Richtung des Vektors selbst, so dass es kein Argument dafür braucht). Auch Excel kann das natürlich selbst, denn es geht doch nur um 2 Dimensionen. Auch TEXTVERKETTEN hätte man mit einem Zusatzargument NACHZEILE bzw. NACHSPALTE ausstatten können. Da TEXTVERKETTEN aber vor den SPILL-Formeln kam, war das evtl. noch zu entschuldigen. Da hatte ich eben dann doch einen "Verdacht" und habe mir Dein ARRAY.SPLIT angeschaut (bei dem ich immer aufgrund des Namens vermutete, dass es das könne). Mit XMLFILTERN bist Du aber genau auf diese scheinbare Unmöglichkeit gelaufen. Denn das kann tatsächlich nur 1D. Als Spalte.
Registriert seit: 08.05.2014
Version(en): Office 2010, Office 365, Office 365 Betakanal
23.03.2022, 09:37
(Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2022, 09:46 von maninweb.)
Moin
habe ich ausprobiert, mich aber auf Code 3 fokussiert. Bin jedoch der Ansicht, dass bspw. die Zwischenrückgabe kein Array ist, das wiederum Arrays enthält, sondern Text, z.B. aus TEXTVOR(z&x&z;z;y+1). Daher funktioniert das. Ähnlich sehe ich das für Code 2. Dass die Calc-Engine keine Arrays von Arrays auswerten kann, ist eine Aussage des Excel-Teams.
Ich schätze, dass TEXTTRENNEN intern anders gebaut ist, als bspw. TEXTVOR. Und zwar wegen der Möglichkeit, mehrere Spaltentrenner zu haben, was ggf. intern zu Arrays führt.
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
Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:1 Nutzer sagt Danke an LCohen für diesen Beitrag 28
• maninweb
|