[Excel] Text splitten spezial (1)
#1
Moin

Im MrExcel-Forum gab es eine Anfrage zur Text-Splittung.
Ausgangslage ist ein Text der einen Datensatz mit mehreren Nodes enthält (Überschriften und Daten). Vor und nach dem Datensatz stehen weitere Text-Nodes.
Erhöhte Schwierigkeit: Die Anzahl der Text-Nodes vor und nach dem Datensatz ist nicht einheitlich.

Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDEFG
1Bla bla bla bla:::Name:::Rudi Rastlos:::ID:::8524:::Alter:::55:::Blubb blubb blubb
2
3Name3
4ID5
5Alter7
6
7NameIDAlterMethodeFormel-Länge
8Rudi Rastlos852455position() mod 2163
9Rudi Rastlos852455INDEX()88
10Rudi Rastlos852455postition() XVERWEIS()232
11Rudi Rastlos852455following-sibling106
12
13
14
15Bla bla bla bla:::Wau wau wau:::Name:::Rudi Rastlos:::ID:::8524:::Alter:::55:::Blubb blubb blubb
16
17Name4
18ID6
19Alter8
20
21NameIDAlterMethodeFormel-Länge
22Rudi Rastlos852455position() mod 2167
23Rudi Rastlos852455INDEX()91
24Rudi Rastlos852455postition() XVERWEIS()236
25Rudi Rastlos852455following-sibling109
26
27
28
29Bla bla bla bla:::Name:::Rudi Rastlos:::ID:::8524:::Alter:::55:::Blubb blubb blubb:::Miau Miau Miau:::Grr Grr Grr
30
31Name3
32ID5
33Alter7
34
35NameIDAlterMethodeFormel-Länge
36Rudi Rastlos852455position() mod 2167
37Rudi Rastlos852455INDEX()91
38Rudi Rastlos852455postition() XVERWEIS()236
39Rudi Rastlos852455following-sibling109

ZelleFormel
B3=VERGLEICH(A3;XMLFILTERN("<y><z>"&WECHSELN(A1;":::";"</z><z>")&"</z></y>";"//z");0)+1
A8=MTRANS(XMLFILTERN("<y><z>"&WECHSELN(A1;":::";"</z><z>")&"</z></y>";"//z[position() mod 2="&--ISTUNGERADE(B3)&" and position()>"&B3-1&" and position()<"&B5+1&"]"))
A9=MTRANS(INDEX(XMLFILTERN("<y><z>"&WECHSELN(A1;":::";"</z><z>")&"</z></y>";"//z");B3:B5))
A10=LET(
a;XMLFILTERN
("<y><z>"&WECHSELN(A1;":::";"</z><z>")&"</z></y>";"//z[position()>0 and position()<8]");
b;XMLFILTERN
("<y><z>"&WECHSELN(A1;":::";"</z><z>")&"</z></y>";"//z[position()>1 and position()<9]");
XVERWEIS
($A$7:$C$7;a;b))
A11=XMLFILTERN("<y><z>"&WECHSELN(A1;":::";"</z><z>")&"</z></y>";"//z[.='"&A7:C7&"']/following-sibling::z[1]")
G8=LÄNGE(FORMELTEXT(A8))
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg

Das zweite Beispiel enthält einen weiteren Node vor dem Datensatz.
Das dritte Beispiel enthält zwei weitere Nodes nach dem Datensatz.
Die ersten beiden Formeln scheiterten ursprünglich an diesen Beispielen weil Werte fest in die Formeln codiert wurden. Durch Dynamisierung (goldfarbene Felder) wurde dieses Manko behoben.
Die ausgewiesene Formellänge bezieht sich auf die Formel in der jeweiligen Zeile. Für Formel 1 und Formel 2 müssten noch die Formeln der Hilfszellen (organgefarbene Felder) mit einbezogen werden.
Alle Formeln laufen über. Es wird also Office 365 benötigt - eventuell funktioniert es auch mit dem neuen Office 2021.

Fazit: xpath ist ziemlich mächtig wenn man alle Möglichkeiten kennt.

PS: Formel 1 bis Formel 3 wurden von mir beigetragen, Formel 4 wurde vom User Fluff beigetragen.


Angehängte Dateien
.xlsm   Text splitten und bestimmte Felder extrahieren.xlsm (Größe: 19,84 KB / Downloads: 7)
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

[-] Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:
  •
Antworten Top


Gehe zu:


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