Microsoft Excel

Herbers Excel/VBA-Archiv

Text in Spalten in Tabelle

Betrifft: Text in Spalten in Tabelle von: Daniela
Geschrieben am: 23.10.2014 12:13:48

Hallo,

Ich bekomme da täglich eine Liste mit ca. 1000 bis 2500 Zeilen und 15 Spalten.

In der Spalte B habe ich (172.55.22.16_Port1-172.55.22.22_Port12).
Diesen Eintrag in der Spalte B möchte ich mit „Text in Spalten“ teilen.
Dafür muss ich aber zuerst eine leere Spalte einfügen um „172.55.22.16_Port1“ und „172.55.22.22_Port12“ bei“-“ zu teilen.
Danach leere Spalte einfügen um „172.55.22.16_Port1“ und „172.55.22.22_Port12“ bei“_“ zu teilen
um als Ergebnis in
Spalte B „172.55.22.16“
Spalte C „Port1“
Spalte D „172.55.22.22“
Spalte E „Port12“
zu erhalten.
Es gibt zwischendurch auch Zeilen in welchen nur der Wert „172.55.22.16_Port1“ steht und somit nur auf zwei Spalten „B und C“ aufgeteilt wird und die Spalten „D und E“ bleiben deshalb leer.
Durch das Einfügen von neuen Spalten werden die Spalten „C“ usw. nur verschoben und nicht überschrieben.
Gibt es dafür eine einfache Macro- oder VBA Lösung?

Vielen Dank schon jetzt dafür

  

Betrifft: AW: Text in Spalten in Tabelle von: Steffi
Geschrieben am: 23.10.2014 13:49:08

Hallo Daniela,


hattest du dir etwas in dieser Art vorgestellt?

Sub Zelle_aufteilen()
    Dim Zähl As Long
    Dim ArrayZähl As Long
    Dim SpaltenZähl As Long
    Dim A As String
    Dim B() As String
    Dim C()  As String

    
    With ThisWorkbook.Sheets(1) 'anpassen
        .Columns("B:E").Insert Shift:=xlToRight
    
        For Zähl = 1 To .UsedRange.Rows.Count
            A = .Cells(Zähl, 1)
            SpaltenZähl = 2
            

            B = Split(A, "-")
            
            For ArrayZähl = LBound(B) To UBound(B)
                C = Split(B(ArrayZähl), "_")
                
                .Cells(Zähl, SpaltenZähl) = C(0)
                .Cells(Zähl, SpaltenZähl + 1) = C(1)
                
                SpaltenZähl = SpaltenZähl + 2
            Next ArrayZähl

        Next Zähl
    End With
End Sub
Ich hoffe das kann dir helfen.


Gruß Steffi


  

Betrifft: AW: Text in Spalten in Tabelle von: Daniela
Geschrieben am: 23.10.2014 14:34:36

Hallo Steffi,

Danke vorerst einmal.

Es hat nicht nach meinen Vorstellungen funktioniert.

Ich habe die https://www.herber.de/bbs/user/93311.xlsx als Ausgangsdatei hochgeladen

Spalte B welche ich bearbeiten möchte habe ich mit grauen Hintergrund.

Diese soll so auseinandergeteilt sein wie in der Datei https://www.herber.de/bbs/user/93312.xlsx

Vielleicht ist die Änderung möglich!

Danke dir Steffi

lg

Daniela


  

Betrifft: AW: Text in Spalten in Tabelle von: Steffi
Geschrieben am: 23.10.2014 14:49:09

Hallo Daniela,

probier bitte ob das besser klappt:

Option Explicit

Sub Zelle_aufteilen()
    Dim Zähl As Long
    Dim ArrayZähl As Long
    Dim SpaltenZähl As Long
    Dim A As String
    Dim B() As String
    Dim C()  As String

    
    With ThisWorkbook.Sheets(1) 'anpassen
        .Columns("C:E").Insert Shift:=xlToRight
        .Columns("C:E").ColumnWidth = 20
    
        For Zähl = 2 To .UsedRange.Rows.Count
            A = .Cells(Zähl, 2)
            SpaltenZähl = 2
            

            B = Split(A, "-")
            
            For ArrayZähl = LBound(B) To UBound(B)
                If InStr(1, B(ArrayZähl), "_") <> 0 Then
                    C = Split(B(ArrayZähl), "_")
                    
                    .Cells(Zähl, SpaltenZähl) = C(0)
                    .Cells(Zähl, SpaltenZähl + 1) = C(1)
                    
                    SpaltenZähl = SpaltenZähl + 2
                Else
                    .Cells(Zähl, SpaltenZähl) = B(ArrayZähl)
                End If
            Next ArrayZähl

        Next Zähl
        
    End With
End Sub
Die Aufbau der Tabelle war hier etwas anders, deshalb musste was angepasst werden.


Gruß Steffi


  

Betrifft: AW: Text in Spalten in Tabelle von: Daniela
Geschrieben am: 23.10.2014 15:28:56

Hallo Steffi,

Danke für deine Hilfsbereitschaft.

Das hat jetzt bestens funktioniert ;-)

Gruß Daniela


  

Betrifft: AW: Text in Spalten in Tabelle von: Bastian
Geschrieben am: 23.10.2014 14:55:20

Hallo,

hier eine Alternative:

Option Explicit

Sub trennen()
    Dim strText As String
    Dim varTeil As Variant
    Dim lngLZeile As Long
    Dim i As Long
    Dim j As Long
    lngLZeile = Cells(Rows.Count, 2).End(xlUp).Row
    Columns("C:E").Insert Shift:=xlToRight
    For i = 1 To lngLZeile
        strText = Cells(i, 2).Value
        strText = Replace(strText, "_", "-")
        varTeil = Split(strText, "-")
        For j = 0 To UBound(varTeil)
            Cells(i, 2).Offset(0, j).Value = varTeil(j)
        Next j
    Next i
End Sub
Gruß, Bastian


  

Betrifft: AW: Text in Spalten in Tabelle von: Daniela
Geschrieben am: 23.10.2014 15:26:48

Hallo Bastian,

Vielen Dank für deinen Hilfe, aber irgendwie komme ich damit nicht klar!

Gruß

Daniela


  

Betrifft: AW: Text in Spalten in Tabelle von: Bastian
Geschrieben am: 23.10.2014 15:48:36

Hallo Daniela,

hm, funktioniert aber. Habs mal in Deine Ausgangsdatei eingefügt:
https://www.herber.de/bbs/user/93315.xlsm

Aber wenn der Code von Steffi jetzt auch funktioniert, ist ja alles ok.

Gruß, Bastian


  

Betrifft: AW: Text in Spalten in Tabelle von: Daniela
Geschrieben am: 24.10.2014 12:27:17

Hallo Bastian,

War mein Fehler den ich beim einfügen gemacht habe.

Habe jetzt meine gesamte Liste auch mit deinem VBA probiert und es hat auch bestens funktioniert.

Danke dir recht herzlich (-;

Gruß, Daniela


 

Beiträge aus den Excel-Beispielen zum Thema "Text in Spalten in Tabelle"