Zelleninhalt nach Leerzeichen trennen und in verschiedene Zellen schreiben

  • Excel

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von FBM.

    Zelleninhalt nach Leerzeichen trennen und in verschiedene Zellen schreiben

    HalloLeute,
    ich hoffe ihr könnt mir weiterhelfen.

    Ich möchte dein Zelleninhalt einer Zelle trennen und in verschiedene Zellen schreiben.
    Also Zelle1:"Wert1 Wert2 .... WertN" zu Zelle1:"Wert1" Zelle2:"Wert2" ZelleN:"WertN"

    Ich habe im Forum schon folgenden VBA-Code gefunden (Quelle):

    Visual Basic-Quellcode

    1. Dim Zeichenlaenge As Byte
    2. Dim Laenge_zweiter_Teil As Byte
    3. Dim Zeichenfolge As Variant
    4. Dim Zeile1 As Integer
    5. Dim Spalte1 As Integer
    6. Dim Zielspalte1 As Integer
    7. Dim Zielspalte2 As Integer
    8. Dim Spalte2 As Integer
    9. Spalte2 = 2
    10. Zeichenfolge = " "
    11. Zeile1 = 2
    12. Spalte1 = 1
    13. Zielspalte1 = 1
    14. Zielspalte2 = 2
    15. Again:
    16. Do While Tabelle1.Cells(Zeile1, Spalte1) <> ""
    17. If Tabelle1.Cells(Zeile1, Spalte2) = "" Then
    18. Zeichenlaenge = Len(Tabelle1.Cells(Zeile1, Spalte1))
    19. erster_Teil = Left(Tabelle1.Cells(Zeile1, Spalte1), (InStr(Tabelle1.Cells(Zeile1, Spalte1), Zeichenfolge) - 1))
    20. Laenge_zweiter_Teil = Zeichenlaenge - InStr(Tabelle1.Cells(Zeile1, Spalte1), Zeichenfolge)
    21. Tabelle1.Cells(Zeile1, Zielspalte2) = Right(Tabelle1.Cells(Zeile1, Spalte1), Laenge_zweiter_Teil)
    22. Tabelle1.Cells(Zeile1, Zielspalte1) = erster_Teil
    23. End If
    24. Loop


    Nun dachte ich mir, dass ich einfach eine "goto" Anweisung am ende einbaue und Spalte1, Spalte2, Zielspalte1 und Zielspalte2 plus 1 rechne. Also das er den Inhalt aus B2 nun bearbeitet und nach einem Leerzeichen den Rest in C2 schreibt.
    Leider muss da ein großer Denkfehler drin sein. :( Das Programm stürzt komplett ab.

    So sieht das bei mir aus:

    Visual Basic-Quellcode

    1. Dim Zeichenlaenge As Byte
    2. Dim Laenge_zweiter_Teil As Byte
    3. Dim Zeichenfolge As Variant
    4. Dim Zeile1 As Integer
    5. Dim Spalte1 As Integer
    6. Dim Zielspalte1 As Integer
    7. Dim Zielspalte2 As Integer
    8. Dim Spalte2 As Integer
    9. Spalte2 = 2
    10. Zeichenfolge = " "
    11. Zeile1 = 2
    12. Spalte1 = 1
    13. Zielspalte1 = 1
    14. Zielspalte2 = 2
    15. Oben:
    16. Do While Tabelle1.Cells(Zeile1, Spalte1) <> ""
    17. If Tabelle1.Cells(Zeile1, Spalte2) = "" Then
    18. Zeichenlaenge = Len(Tabelle1.Cells(Zeile1, Spalte1))
    19. erster_Teil = Left(Tabelle1.Cells(Zeile1, Spalte1), (InStr(Tabelle1.Cells(Zeile1, Spalte1), Zeichenfolge) - 1))
    20. Laenge_zweiter_Teil = Zeichenlaenge - InStr(Tabelle1.Cells(Zeile1, Spalte1), Zeichenfolge)
    21. Tabelle1.Cells(Zeile1, Zielspalte2) = Right(Tabelle1.Cells(Zeile1, Spalte1), Laenge_zweiter_Teil)
    22. Tabelle1.Cells(Zeile1, Zielspalte1) = erster_Teil
    23. End If
    24. Loop
    25. Spalte1 = Spalte1 + 1
    26. Zielspalte1 = Zielspalte1 + 1
    27. Zielspalte2 = Zielspalte2 + 1
    28. Spalte2 = Spalte2 + 1
    29. GoTo Oben


    Kann mir bitte jemand sagen was ich falsch mache? :/

    Danke!
    LG FBM
    Ich würde es etwa so angehen:

    Visual Basic-Quellcode

    1. Private Sub los()
    2. Dim Zeile As Long
    3. Dim Spalte As Long
    4. Dim letzteZeile As Long
    5. Dim s() As String
    6. letzteZeile = UsedRange.SpecialCells(xlCellTypeLastCell).Row
    7. For Zeile = 1 To letzteZeile
    8. s = Split(Cells(Zeile, 1), Chr$(32), , vbTextCompare)
    9. For Spalte = 2 To UBound(s) + 2
    10. Cells(Zeile, Spalte).Value = s(Spalte - 2)
    11. Next Spalte
    12. Next Zeile
    13. End Sub
    Gruß
    Peterfido

    Keine Unterstützung per PN!