Text aus Zeichenkette extrahieren
#1
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
Win 10
Office 2010 & 2016
Top
#2
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
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#3
(14.09.2020, 22: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, 22:32)Mick-DUS schrieb: Die Textdatei ist leider nicht so aufgebaut, dass ich sie kommasepariert importieren kann.
Wenn du das so festgestellt hast ...
Wir sehen uns!
... Detlef

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

Top
#4
… und außer Konkurrenz das unverschämt einfache Google Sheets:
=INDEX(SPLIT(A1;", ");14)
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)
Top
#5
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.
Top
#6
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#7
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
Win 10
Office 2010 & 2016
Top


Gehe zu:


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