Clever-Excel-Forum

Normale Version: Text aus Zeichenkette extrahieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend

Ich drehe mich im Kreis bei folgendem Problem:

In einer Spalte stehen in den Zellen jeweils eine Zeichenkette unterschiedlicher Zeichenlänge, die jedoch durch Komma in Blöcke getrennt sind.
Es sind immer 19 "Blöcke" und ich möchte den Wert aus Block 14 jeweils auslesen.
Ich habe das Beispiel mal etwas zur besseren Lesbarkeit TAB separiert
SUM1, 63.41, 112.86, 2:14, 0.00, 186, 19, 19, 19, 43.82, 0.00, 0.00, 36.91, 491.28, 1.20, 2.23, 0.79, 0.00, 0.00
SUM1, 3.81, 5.80, 0:05, 0.00, 14, 1, 1, 1, 34.31, 0.00, 0.00, 1.56, 26.28, 0.10, 0.14, 0.04, 0.00, 0.00
SUM1, 7.51, 18.68, 0:17, 0.00, 18, 4, 4, 4, 59.80, 0.00, 0.00, 9.89, 73.28, 0.15, 0.39, 0.20, 0.00, 0.00

Ich müsste also immer den Wert zwischen dem 13 und 14 Komma auslesen.
zZt löse ich das über Hilfsspalten mit der Formel "RECHTS([@Column1];LÄNGE(B2)-FINDEN(",";[@Column1];1))" die ich dann solange in Hilfspalten habe bis ich an den Wert komme und den über "LINKS([@Column14];FINDEN(",";[@Column14];1)-1)" freistelle.
Sicherlich geht das auch eleganter in einer Formel
Vielleicht hat jemand von Euch eine passende Idee dazu. Ich würde mich freuen
PS, die Werte filter ich über PQuery aus Textdateien, wo Daten in unterschiedlicher Weise gelistet sind . Der für mich interessante Wert ist immer in der Zeile, die mit SUM1 beginnt. Das ist mein Filterkriterium.

Die Textdatei ist leider nicht so aufgebaut, dass ich sie kommasepariert importieren kann.


Gruß
Michael
Hallo Michael,

ich glaube, das passt so:
Arbeitsblatt mit dem Namen 'Tabelle1'
AB
1SUM1, 63.41, 112.86, 2:14, 0.00, 186, 19, 19, 19, 43.82, 0.00, 0.00, 36.91, 491.28, 1.20, 2.23, 0.79, 0.00, 0.00491.28
2SUM1, 3.81, 5.80, 0:05, 0.00, 14, 1, 1, 1, 34.31, 0.00, 0.00, 1.56, 26.28, 0.10, 0.14, 0.04, 0.00, 0.0026.28
3SUM1, 7.51, 18.68, 0:17, 0.00, 18, 4, 4, 4, 59.80, 0.00, 0.00, 9.89, 73.28, 0.15, 0.39, 0.20, 0.00, 0.0073.28

ZelleFormel
B1=TEIL(WECHSELN(A1;",";"#";13);FINDEN("#";WECHSELN(A1;",";"#";13))+1;FINDEN("#";WECHSELN(A1;",";"#";14))-FINDEN("#";WECHSELN(A1;",";"#";13))-1)
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
(14.09.2020, 21:32)Mick-DUS schrieb: [ -> ]Sicherlich geht das auch eleganter in einer Formel

Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDEF
1lupo1-Split mit DAXMLFILTERN()Blitzvorschau
2SUM1, 63.41, 112.86, 2:14, 0.00, 186, 19, 19, 19, 43.82, 0.00, 0.00, 36.91, 491.28, 1.20, 2.23, 0.79, 0.00, 0.0011219491.28491.28491.28
3SUM1, 3.81, 5.80, 0:05, 0.00, 14, 1, 1, 1, 34.31, 0.00, 0.00, 1.56, 26.28, 0.10, 0.14, 0.04, 0.00, 0.001031926.2826.2826.28
4SUM1, 7.51, 18.68, 0:17, 0.00, 18, 4, 4, 4, 59.80, 0.00, 0.00, 9.89, 73.28, 0.15, 0.39, 0.20, 0.00, 0.001041973.2873.2873.28

ZelleFormel
B2=LÄNGE(A2)
C2=B2-LÄNGE(WECHSELN(A2;",";""))+1
D2=INDEX(GLÄTTEN(TEIL(WECHSELN($A2;", ";WIEDERHOLEN(" ";$B2));SEQUENZ(;C2;0)*B2+1;$B2));14)
E2=INDEX(XMLFILTERN("<a><b>"&WECHSELN(A2;", ";"</b><b>")&"</b></a>";"//b");14)
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg

(14.09.2020, 21:32)Mick-DUS schrieb: [ -> ]Die Textdatei ist leider nicht so aufgebaut, dass ich sie kommasepariert importieren kann.
Wenn du das so festgestellt hast ...
… und außer Konkurrenz das unverschämt einfache Google Sheets:
=INDEX(SPLIT(A1;", ");14)
Hallo, :19:

hier eine Möglichkeit über eine UDF. Der optionale Parameter ist nur drin, falls mal ein anderer Wert ausgelesen werden soll. :21:
[attachment=34175]

Bequemer wäre es m. E. n. aber, das Ganze gleich komplett (also einlesen und auswerten) in VBA zu machen.
Oder schon beim öffnen einer TXT-Datei:

Code:
Sub M_snb()
  sn = Array(9, 0)
  Workbooks.OpenText "G:\OF\Beispiel.txt", , , , , , , , , , , , Array(sn, sn, sn, sn, sn, sn, sn, sn, sn, sn, sn, sn, sn, Array(1, 0), sn, sn, sn, sn)
End Sub
Dank an Euch Alle!

Ich habe gerade wieder Zeit gefunden, mich meinen "Problem" zu widmen und schaue gerade die Früchte im Forum an, die sich nach meiner "Aussaat" entwickelt haben. Ich bin beeindruckt, welche Möglichkeiten es doch immer wieder gibt.
Ich werde das jetzt für mich weiter durchspielen und Euren Lösungen kosten.
Herzlichen Dank dafür

Michael