Gruppe: Sonstiges
Beitrag: Dynamisches Array erstellen
=TEXTTEILEN(GLÄTTEN(TEXTKETTE(WIEDERHOLEN(B2:B12&" ";A2:A12)));;" ")Die einzelnen Werte – egal ob Zahlen oder Text – werden von TEXTTEILEN als "Text" zurückgegeben. Wenn es ausschließlich Zahlen sind (wie im Beispiel), kann man diese "Textzahlen" mit einer mathematisch neutralen Operation in echte Zahlen umwandeln – im Folgenden nutzen wir dazu das Doppelminus --
=--TEXTTEILEN(GLÄTTEN(TEXTKETTE(WIEDERHOLEN(B2:B12&" ";A2:A12)));;" ")Wenn es Text und Zahlen sind, oder man nicht genau weiß, ob Text oder Zahlen oder beides, kann man wie folgt formulieren:
=LET(x;TEXTTEILEN(GLÄTTEN(TEXTKETTE(WIEDERHOLEN(B2:B12&" ";A2:A12)));;" ");WENNFEHLER(--x;x))Damit bleiben Texte Texte, aber Textzahlen werden in echte Zahlen umgewandelt. Seit xl2019 geht das mit XMLFILTERN:
=XMLFILTERN("<x><y>"&WECHSELN(GLÄTTEN(TEXTKETTE(WIEDERHOLEN(B2:B12&" ";A2:A12)));" ";"</y><y>")&"</y></x>";"//y")Die Syntax der XML-Schreibweise muss man nicht beherrschen, um die Formel anzuwenden. Der einzig variable Formelteil sind die beiden Bereiche (hier: A2:A12 und B2:B12). XMLFILTERN gibt es seit xl2013 – aber TEXTKETTE erst seit xl2019, weshalb die Formel erst ab xl2019 einsetzbar ist. Hier muss man nicht nach Text und Zahlen unterscheiden – die Funktion gibt jeweils den korrekten Datentyp zurück. Da es in Excelversionen vor 365 das Spill-Prinzip noch nicht gibt, wird dort das gesamte XMLFILTERN-Array nur "intern" erzeugt und ist nicht "sichtbar". Da es aber natürlich vorhanden ist, lassen sich daraus mit umrandenden Funktionen aggregierte Ergebnisse ermitteln (MAX, MIN, STABWN, SUMME, ANZAHL, ANZAHL2 etc. etc.). Einzelne Elemente aus dem Array lassen sich wie folgt auslesen (beispielhaft das 6. Element):
=XMLFILTERN("<x><y>"&WECHSELN(GLÄTTEN(TEXTKETTE(WIEDERHOLEN(B2:B12&" ";A2:A12)));" ";"</y><y>")&"</y></x>";"//x/y[6]")oder mit INDEX:
=INDEX(XMLFILTERN("<x><y>"&WECHSELN(GLÄTTEN(TEXTKETTE(WIEDERHOLEN(B2:B12&" ";A2:A12)));" ";"</y><y>")&"</y></x>";"//y");6)Die Formeln sind ne Gemeinschaftsproduktion von uns, Harry HS(V) und Ralf (RPP63neu).