Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Trennen nach einem bestimmten Zeichen

Forumthread: Trennen nach einem bestimmten Zeichen

Trennen nach einem bestimmten Zeichen
02.04.2026 15:16:56
Tobi_84
Hallo zusammen,

mein VBA-Wissen ist sehr eingeschränkt und ich benötige bitte Hilfe bei der Anpassung / Umwandlung eines Codes.
Der Code, welcher mir hier zur Verfügung gestellt wurde funktioniert bislang super.
Jetzt möchte ich aber anstelle einer Trennung nach z.B. 36 Zeichen ein Trennung nach einem bestimmten Zeichen wir z.B. vbCrLf.
Kann mir bitte jemand den Code abändern.

Sub TrennenNachXZeichen()

Const lngCut As Long = 36
Dim a As Long, i As Long, lngZ As Long, Anzahl As Long
Dim vWoerter As Variant, vZeile() As Variant
Dim lastRow As Integer
Dim cell As Range
' Bildschirmaktualisierung & Mitteilungen aus
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Application.EnableEvents = False

For lngZ = Cells(Rows.Count, 4).End(xlUp).Row To 3 Step -1
vWoerter = Split(Application.Substitute(Cells(lngZ, 4).Value, vbLf, " "), " ")
If UBound(vWoerter) > -1 Then
ReDim vZeile(0)
a = 0
vZeile(0) = vWoerter(0)
For i = 0 To UBound(vWoerter) - 1
If Len(vZeile(a)) + Len(vWoerter(i + 1)) > lngCut Then
a = a + 1
ReDim Preserve vZeile(a)
vZeile(a) = vWoerter(i + 1)
Else
vZeile(a) = vZeile(a) & " " & vWoerter(i + 1)
End If
Next i
If UBound(vZeile) > 0 Then
Rows(lngZ + 1).Resize(UBound(vZeile)).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
vZeile = Application.Transpose(vZeile)
Cells(lngZ, 4).Resize(UBound(vZeile)).Value = vZeile
End If
End If
Next lngZ
End Sub
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Trennen nach einem bestimmten Zeichen
02.04.2026 16:22:31
MCO
Hallo Tobi!

Probier das mal aus.
Mit den Zeile einfügen weiß ich nicht ob das so gewollt ist, aber erstmal läufts.
Sub TrennenNachXZeichen()


Const lngCut As Long = 36
Dim a As Long, i As Long, lngZ As Long, Anzahl As Long
Dim vWoerter As Variant, vZeile() As Variant
Dim lastRow As Integer
Dim cell As Range

' Bildschirmaktualisierung & Mitteilungen aus
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Trennzeichen = "§" 'Hier kannst du dein Trennzeichen (oder mehrere Einfügen)

For lngZ = Cells(Rows.Count, 4).End(xlUp).Row To 3 Step -1

vWoerter = Split(Cells(lngZ, 4).Value, Trennzeichen)

If UBound(vWoerter) > 0 Then
ReDim vZeile(0)
a = 0
vZeile(0) = vWoerter(0)

Rows(lngZ + 1).Resize(UBound(vWoerter)).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
vZeile = Application.Transpose(vWoerter)
Cells(lngZ, 4).Resize(UBound(vZeile)).Value = vZeile
End If
Next lngZ

End Sub

Gruß, MCO

Anzeige
AW: Trennen nach einem bestimmten Zeichen
03.04.2026 15:49:29
snb
Reicht auch :
Trennzeichen "_"

Sub M_snb()

sn = Split(Join(Application.Transpose(Cells(3, 4).Resize(Cells(Rows.Count, 4).End(xlUp).Row - 2)), "_"), "_")
Cells(3, 4).Resize(UBound(sn)) = Application.Transpose(sn)
End Sub


Anzeige
AW: Trennen nach einem bestimmten Zeichen
03.04.2026 15:51:26
snb
Verbesserung:

Sub M_snb()

sn = Split(Join(Application.Transpose(Cells(3, 4).Resize(Cells(Rows.Count, 4).End(xlUp).Row - 2)), "_"), "_")
Cells(3, 4).Resize(UBound(sn)+1) = Application.Transpose(sn)
End Sub
AW: Trennen nach einem bestimmten Zeichen
03.04.2026 17:28:29
RPP63
oder
Sub Magic()

Range("RPP63").Formula2 = "=TEXTSPLIT(CONCAT(D.:.D&CHAR(10)),,CHAR(10),1)"
Range("RPP63#").Cut Range("D1")
End Sub
Anzeige
AW: Trennen nach einem bestimmten Zeichen
02.04.2026 16:40:13
Tobi_84
Hallo MCO,
ein großes Dankeschön und Respekt für die sehr schnelle Hilfe es funktioniert so wie ich es wollte.

Trennzeichen musste noch als String definiert werden.

Schöne Grüße,
Tobi
Warum VBA?
03.04.2026 12:12:12
RPP63
Moin!
Mit Deinem Excel 365 würde ich so etwas mit einer Formel lösen:
=TEXTTEILEN(TEXTKETTE(D.:.D&ZEICHEN(10));;ZEICHEN(10);1)

Userbild

Gruß Ralf
Anzeige
AW: Warum VBA?
03.04.2026 12:24:49
Tobi_84
Hallo Ralf,

danke für deinen Beitrag, aber eine Formel in einer Zelle kommt für meinen Fall nicht in Frage.
Die Eingabedaten sind dynamisch und können somit nicht mit einer Formel an einer bestimmten Stelle verarbeitet werden.
Ich importiere die Daten aus einem Programm um sie dann mit einer Schaltfläche in das entsprechende Format zu bringen und gleichzeitig in eine reine Datentabelle ohne Formeln zu speichern.

Gruß Tobi
Anzeige
AW: Warum VBA?
03.04.2026 12:35:32
RPP63
Meine Formel ist sowas von dynamisch …
Der Bereich D.:.D passt sich automatisch an und bedeutet nichts anderes als Dein
Range(Cells(4, 1), Cells(Rows.Count, 4).End(xlUp))
https://support.microsoft.com/de-de/office/trimrange-funktion-d7812248-3bc5-4c6b-901c-1afa9564f999
Aber selbstverständlich kannst Du weiterhin Arrays mittels VBA manipulieren.
Nur: Zeitgemäß ist dies nicht mehr.
(und natürlich kannst Du diese WorksheetFunction auch in VBA verwenden)

Gruß und Frohe Ostern
wünscht Ralf
Anzeige
Wenn du...
04.04.2026 08:23:30
Case
Moin Tobi, :-)

... den Import der Daten über Power Query machen kannst, dann brauchst du nur noch trennen und ausgeben: ;-)

Trennen = Table.ExpandListColumn(Table.TransformColumns(Quelle, {{"Daten", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv)}}), "Daten")

Dort kannst du mit den Daten auch noch mehr "anstellen". ;-)

Servus
Case
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige