380 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,
ich habe eine textdatei in welcher sich mehrere Texte und zifferngruppen in einer Zeile befinden.
Ist es möglich, die Zeilen nach 3 oder mehr Leerzeichen zu trennen, den Rest-inhalt in die nächste rechte Spalte zu verschieben?
z.B:

557763   brauner Tisch  1200 x 700   beine gedrechselt

als text in einer Zelle vorhanden,
daraus hätte ich gerne 4 Zellen in einer Zeile:

557763 | brauner Tisch | 1200 x 700 | beine gedrechselt

Ist so etwas per VBA machbar?
Falls ja, wie würde sich das auf eine Liste mit 15 Zeilen anwenden lassen?

Vielen Dank für eure Vorschläge im Voraus,
LG, ein unwissender Anwender

3 Antworten

0 Punkte
Beantwortet von flupo Profi (17.8k Punkte)

Hi,

Excel hat da eine praktische Funktion namens "Text in Spalten". Sie findet sich im Menüband "Daten".

Damit du die aber für deinen Zweck nutzen kannst, musst du die drei Leerzeichen aber noch per "suchen und ersetzen" durch ein beliebiges anderes Zeichen, dass im Text nirgendwo vorkommt, z.B. @ oder $.

Leider funktioniert das aber in Excel nicht. Kopiere die 15 Zellen deshalb nach Word, ersetze die Leerzeichen und kopiere das Ergebnis wieder zurück in die Tabelle.

Das kannst du dann der "Text in Spalten"-Funktion als Trennzeichen mitgeben.

Ausgangslage:

Schritt 1:

Schritt 2:

Gruß Flupo

0 Punkte
Beantwortet von beverly_ Experte (3.4k Punkte)

Hi,

ich habe mal deinen Text kopiert und festgestellt, dass eins deiner "doppelten Leerzeichen" kein Leerzeichen sondern das Zeichen 160 ist, was auch logisch erscheint, da die Daten aus einer Textdatei stammen. Mit folgendem Makro kannst du den Text dann aufteilen:

Sub Trennen()
    Dim intZaehler As Integer
    Dim intSpalte As Integer
    Dim varWert As Variant
    Dim lngZeile As Long
    intSpalte = 2
    For lngZeile = 1 To 15
        varWert = Split(Range("A1"), Chr(160))
        For intZaehler = 0 To UBound(varWert)
            If varWert(intZaehler) <> "" Then
                Cells(1, intSpalte) = Trim(varWert(intZaehler))
                intSpalte = intSpalte + 1
            End If
        Next intZaehler
    Next lngZeile
End Sub

Bis später, Karin

0 Punkte
Beantwortet von ratloser_user Einsteiger_in (5 Punkte)

Hallo Flupo, hallo Karin,

natürlich habe ich mich über Eure lösungen gefreut.

Zu guterletzt musste ich die Lösung von Flupo anwenden.

Leider scheint wohl beim erstellen meines Beispiels etwas im Forum dazwischen gefunkt zu haben,

denn in meiner Datei ist kein Chr 160, sondern echt nur Leerzeichen (Char 32).

Auch hat das Makro von Karin immer nur in Zeile 1 gearbeitet und alle weiteren zeilen ignoriert.

Das Merkmal 2 oder mehr leerzeichen hat gar nicht funktioniert und so wurden Dinge getrennt, die nicht getrennt werden sollten.

Gleich wie es ausgegangen ist, möchte ich Euch trotzdem herzlich danken,

dass Ihr so flink Euer Zeit und Wissen zum lösen meines Problems bereitgestellt habt.

LG, ein unwissender Anwender

...