Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1924to1928
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Split durch Trennzeichen in Zeilen

Split durch Trennzeichen in Zeilen
20.03.2023 13:23:24
Peter

Hallo,

ich habe folgendes Problem:
Mein Code trennt den Inhalt einer Zelle und schreibt die Namensbestandteile darunter. Es sind maximal fünf Bestandteile, also es geht maximal von Zeile 1 bis 5.
Das klappt bisher auch insofern, wenn alle Zellen fünf Bestandteile haben, also viermal das Trennzeichen darin vorkommt. Es kommt jedoch auch vor, dass manche nur zwei- oder dreimal das Trennezeichen haben und dann liefert folgender Code die Fehlermeldung "Laufzeitfehler 424 Objekt erforderlich".

Sub test()
Dim ws As Worksheet
Set ws = Sheets("Daten")
lRow = Range("C1").End(xlDown).Row
lColumn = Range("C1").End(xlToRight).Column
Dim actualRange As Range
Dim tmpString As String
For Each actualRange In ws.Range(Cells(1, 3), Cells(1, lColumn))
tmpString = actualRange.Value
If InStr(Trim(tmpString), "_") > 0 Then
actualRange.Offset(0, 0).Value = Split(tmpString, "_")(0)
actualRange.Offset(1, 0).Value = Split(tmpString, "_")(1)
actualRange.Offset(2, 0).Value = Split(tmpString, "_")(2)
actualRange.Offset(3, 0).Value = Split(tmpString, "_")(3)
actualRange.Offset(4, 0).Value = Split(tmpString, "_")(4)
End If
Next
End Sub



Ich bräuchte also eine Lösung, sodass einfach nichts in die Zelle geschrieben wird, wenn es nicht überall die maximale Anzahl an Namensbestandteilen gibt.

LG Peter

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Split durch Trennzeichen in Zeilen
20.03.2023 13:31:13
Daniel
Hi

probies mal so:
arr ist variant

...
For Each actualRange In ws.Range(Cells(1, 3), Cells(1, lColumn))
    tmpString = actualRange.Value
    If InStr(Trim(tmpString), "_") > 0 Then
        arr = Split(tmpString, "_")
        actualRange.Resize(Ubound(arr, 1) + 1, 1) = Worksheetfunction.Transpose(arr)
    end if
next
Gruß Daniel


AW: Split durch Trennzeichen in Zeilen
20.03.2023 13:47:50
Daniel
Hi
du kannst auch Text in Spalten nutzen.

allerdings musst du dir dafür die Werte erstmal an eine andere Stelle kopieren und transponieren.
ebenso muss beim zurückschreiben dann transponiert werden:

Sub test()
Dim r As Range
Set r = Range("C1")
Range(r, r.End(xlToRight)).Copy
With Cells(1, 99)
    .PasteSpecial xlPasteValues, Transpose:=True
    .CurrentRegion.TextToColumns Destination:=.Cells, DataType:=xlDelimited, _
        textQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
        Tab:=False, Semicolon:=False, Comma:=False, Space:=False, _
        Other:=True, OtherChar:="_"
    .CurrentRegion.Copy
    r.PasteSpecial xlPasteValues, Transpose:=True
    .CurrentRegion.ClearContents
End With
End Sub
Gruß Daniel


Anzeige
AW: Split durch Trennzeichen in Zeilen
20.03.2023 13:57:18
GerdL
Hallo Peter!
Sub Unit()

    Dim ws As Worksheet
    Dim actualRange As Range
    Dim tmpString As String

Set ws = Sheets("Daten")
lColumn = Range("C1").End(xlToRight).Column

For Each actualRange In ws.Range(Cells(1, 3), Cells(1, lColumn))
    tmpString = actualRange.Value
    If InStr(Trim(tmpString), "_") > 0 Then
        actualRange.Resize(1 + UBound(Split(tmpString, "_")), 1) = WorksheetFunction.Transpose(Split(tmpString, "_"))
    End If
Next

Set ws = Nothing

End Sub
Gruß Gerd


AW: Split durch Trennzeichen in Zeilen
20.03.2023 14:04:33
onur
Noch so ein Ding:
Sub test()
    Dim ws, sp, cell, txt, temp, lastsp, i
    Set ws = Sheets("Daten")
    lastsp = Range("C1").End(xlToRight).Column
    For Each cell In ws.Range(Cells(1, 3), Cells(1, lastsp))
        txt = cell: sp = cell.Column
        txt = Split(txt, "_")
        For i = 0 To UBound(txt)
            cell.Offset(i, 0) = txt(i)
        Next i
    Next
 End Sub


Anzeige
AW: Split durch Trennzeichen in Zeilen
20.03.2023 14:57:57
Peter
Danke an alle Antwortgeber, wieder einiges Neues an VBA gelernt.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige