Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antwortento 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)
Antwortento top
#3
(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 ...
Wir sehen uns!
... shift-del
Hinweise zu meiner Hilfe in Foren
Excel Super-Funktionen: VERWEIS(), INDEX(), WAHL()
Antwortento 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)
Antwortento 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

.xlsb   Split_Split_Komma_Wert_zwischen_13_14_auslesen_CEF.xlsb (Größe: 13,75 KB / Downloads: 5)

Bequemer wäre es m. E. n. aber, das Ganze gleich komplett (also einlesen und auswerten) in VBA zu machen.
________
Servus
Case
Antwortento 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
Antwortento 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
Antwortento top


Gehe zu:


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