Ich habe Zeitstempel in Form einer CSV-Datei, in der jede Zeichenfolge wie folgt aussieht:
TT_TU_MN009,"5009","200001010000","-1.8","3","4"
TT_TU_MN009,"5009","200001010200","-1.7","10","1"
TT_TU_MN009,"5009","200001011400","1","10","1"
...
Mein Ziel ist es, die zweite, dritte und vierte Position aus diesem String (ohne die Anführungszeichen) in eine eigene Spalte zu extrahieren:
- 5009
- 200001010000
- -1,8
Das ist mir für die erste Spalte gelungen
=LEFT(A2;SEARCH(",";A2)-1)
aber ich habe keine Ahnung, wie ich das für die anderen beiden Positionen machen soll. Ist das ohne VBA machbar?
Vielen Dank im Voraus
A
Antwort1
Ich möchte zwei verschiedene Methoden vorschlagen, um den n-ten Text aus einer Textzeichenfolge in einer Zelle zu extrahieren.
Methode 1:
Formel in Zelle
J16:=TRIM(MID(SUBSTITUTE("""" & $J$13& REPT(" ",6),"""",REPT(CHAR(32),255)),2*255,255))
Achtung
2*255bestimmt die Position des Textes inJ13,5009ist das 2. Wort/der 2. Text.Für
20000101000die Position ist es die 4., da die Formel,davor als 3. zählt.J17Ersetzen Sie also für die Formel in der Zelle2*255durch4*255und6*255für-1.8die Formel in durchJ18.
Methode 2:
Es umfasst ein VBA-Makro und ist eine UDF (User Define Function).
- Drücken Sie entwederAlt+F11oderRKlicken Sie rechts aufSDrücken Sie die TAB-Taste und klicken Sie im eingeblendeten Menü aufCode anzeigenum einen VB-Editor zu erhalten.
- Copy &PSpeichern Sie diesen Code als Modul.
Function FindWord(Source As String, Position As Integer)
Dim arr() As String
arr = VBA.Split(Source, ",")
xCount = UBound(arr)
If xCount < 1 Or (Position - 1) > xCount Or Position < 0 Then
FindWord = ""
Else
FindWord = arr(Position - 1)
End If
End Function
- Formel in Zelle
J3:=SUBSTITUTE(J1,CHAR(34),"") - Geben Sie diese Formel in die Zelle ein
J5:=FindWord(J3,2)
Achtung
- Diese Formel
2bestimmt das zweite Wort/den zweiten Text in der Zelle, sodass das nächste folgt,=FindWord(J3,3)und so weiter.
Sie können die VERKETTUNG verwenden, wenn Sie alles in einer Zelle benötigen.




