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

Forumthread: Zeilenumbruch aus Text in einer Zelle

Zeilenumbruch aus Text in einer Zelle
08.03.2017 12:34:41
PWN
Hallo Experten,
mal wieder ein für mich nicht lösbares Problem.
Ich habe eine Excel-Datei, in welcher mehrzeilige Textpassagen in einer Zelle wiedergegeben werden. Zeilenumbruch erfolgt dabei in der Zelle.
Jetzt brauche ich aber jede Zeile innerhalb dieser Zelle in einer eigenen Zelle, wobei in der Zelle nicht mehr als 60 Zeichen stehen dürfen. Sind in der mehrzeiligen Zelle Zeilen, die mehr als 60 Zeichen haben, sind die überzähligen Zeichen in eine zweite oder auch dritte Zelle zu schreiben. Dabei wäre es schön, wenn diese Trennung nicht mitten im Wort stattfinden würde.
Zur Verdeutlichung habe ich eine Datei geladen, aus der das Problem sichtbar wird
https://www.herber.de/bbs/user/112031.xlsx
Hier ist eine große Zelle (A1). Rot gekennzeichnet ist eine Zeile darin, die mehr als 60 Zeichen hat. Ab B2 stehen die Daten, wie ich diese benötige.
Hat jemand eine Idee, wie ich das hin bekomme?
Besten Dank im Voraus
Paul
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilenumbruch aus Text in einer Zelle
08.03.2017 18:03:26
Piet
Hallo
den unteren Code in ein Modul kopieren und starten. Er zerlegt den String in Spalte A in Teilstrings.
Dieses Makro ist zur Zeit für 100 Zeilen ausgelegt, kann aber in Zeilmax auf weitere Zeilen erhöht werden.
Bitte mal testen ob es so richtig funktioniert. Würde mich freuen
mfg Piet
Option Explicit      '8.3.2017  Herber Forum  Piet
Const ZeilMax = 100
Sub nach_Zeilenumbruch_zerlegen()
Dim j As Integer, k As Integer
Dim Wert As String, sp As Integer
Dim Txt As String, Txt2 As String
'Schleife für 100 Zeilen
For k = 1 To ZeilMax
If Cells(k, 1).Value = Empty Then Exit For
Wert = Cells(k, 1).Value
sp = 2  '1. Spalte zum auflisten
For j = 1 To 20
'1. Zeilenumbruch abschneiden
If Left(Wert, 1) = Chr(10) Then _
Wert = Right(Wert, Len(Wert) - 1)
'Text nach Zeilenumbruch zerlegen
If InStr(Wert, Chr(10)) Then
Txt = Left(Wert, InStr(Wert, Chr(10)) - 1)
Wert = Right(Wert, Len(Wert) - InStr(Wert, Chr(10)))
Else: Txt = Wert: Wert = Empty
End If
'Teil-String auflisten  ( 60 Zeichen
Txt2 = Right(Txt, Len(Txt) - InStr(58, Txt, " "))
Txt = Left(Txt, InStr(58, Txt, " "))
Cells(k, sp + 0) = Txt
Cells(k, sp + 1) = Txt2
sp = sp + 2
End If
'zerlegen Ende, Aussprung
If Wert = Empty Then Exit For
Next j
Next k
End Sub

Anzeige
AW: Zeilenumbruch aus Text in einer Zelle
08.03.2017 18:39:38
PWN
Hallo Piet,
ich bin doch schon etwas begeistert! Das funktioniert hervorragend, nur eine, ich denke kleine Sache stört etwas.
Wenn der erste Teil eines Textes nach 65 Zeichen abgeschnitten wird, der Rest aber länger ist als noch weitere 65 Zeichen, dann muß der Rest auch zerlegt werden. In die Anwendung, in welche ich das laden möchte, passen nur maximal 72 Zeichen pro Zeile rein.
Ich hänge die Originaldatei an:
https://www.herber.de/bbs/user/112051.xlsm
In der Zeile 48 steht so ein Text, es gibt aber noch viele andere Zeilen mit mehr als 65 Zeichen.
Könntest Du da bitte nochmals reinschauen?
Herzlichen DAnk, viele Grüße
Paul
Anzeige
AW: Zeilenumbruch aus Text in einer Zelle
08.03.2017 18:29:59
Daniel
Hi
grundsätzlich kannst du die Aufteilung relativ einfach mit TEXT IN SPALTNEN und dem LineFeed als Trennzeichen machen.
Um den LineFeed als Trennzeichen einzugeben kannst du die ALT-Taste gedrückt halten und dabei "010" auf dem Ziffernblock tippen.
der Schwierigere Teil ist der mit den 60 Zeichen pro Zelle.
hier zu muss man vorab in einer Schleife durch den Text laufen und den Abstand von einem LineFeed zum nächsten bestimmen. Ist dieser größer 60, muss ein davorliegendes Leerzeichen durch den LineFeed ausgetauscht werden.
Dann kann man wieder die Aufteilung mit TEXT IN SPALTEN machen.
Sub test()
Dim arr
Dim z As Long
Dim txt As String
Dim Pos1 As Long
Dim Pos2 As Long
With Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
arr = .Value
For z = 1 To UBound(arr, 1)
Pos1 = 1
txt = arr(z, 1) & vbLf
Do
Pos2 = InStr(Pos1, txt, vbLf)
If Pos2 = 0 Then Exit Do
If (Pos2 - Pos1) > 60 Then
Pos2 = InStrRev(Left(txt, Pos1 + 60), " ")
Mid(txt, Pos2, 1) = vbLf
End If
Pos1 = Pos2 + 1
Loop
arr(z, 1) = txt
Next
.Value = arr
.TextToColumns Destination:=.Offset(0, 1), _
DataType:=xlDelimited, _
Other:=True, OtherChar:=Chr(10)
End With
End Sub

achte darauf, dass für die Ausführung in Spalte A immer mindestens zwei Zellen befüllt sein müssen (A1 und A2), sonst funktioniert es nicht.
Gruß Daniel
Anzeige
AW: Zeilenumbruch aus Text in einer Zelle
08.03.2017 18:54:27
PWN
Hallo Daniel,
vielen Dank für Deine Hilfe, Dein Makro läuft so, wie ich mir das erhofft habe.
Viele Grüße
Paul
AW: und noch einer
08.03.2017 18:55:54
PWN
Hallo Klaus,
habe ich gleich mit der kompletten Datei getestet und es funzt problemlos.
Auch Dir vielen Dank für Deine schnelle Hilfe
Viele Grüße
Paul
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilenumbruch aus Text in einer Zelle


Schritt-für-Schritt-Anleitung

Um einen Zeilenumbruch innerhalb einer Zelle in Excel zu erzeugen, kannst Du die folgende Tastenkombination verwenden:

  1. Klicke in die Zelle, in der Du den Absatz in einer Excel Zelle erstellen möchtest.
  2. Schreibe den gewünschten Text.
  3. Um eine neue Zeile innerhalb der Zelle zu beginnen, halte die ALT-Taste gedrückt und drücke ENTER. Dadurch wird ein Zeilenumbruch in der Zelle erzeugt.

Wenn Du bereits mehrzeilige Texte in einer Zelle hast und diese in separate Zellen aufteilen möchtest, kannst Du ein VBA-Makro verwenden. Hier ist ein einfaches Beispiel, das Du in ein Modul einfügen kannst:

Sub nach_Zeilenumbruch_zerlegen()
    Dim i As Integer
    Dim Wert As String
    Dim Zeilen() As String

    For i = 1 To 100
        Wert = Cells(i, 1).Value
        Zeilen = Split(Wert, vbLf) ' Splitte den Text in Zeilen
        For j = LBound(Zeilen) To UBound(Zeilen)
            Cells(i, j + 2).Value = Zeilen(j) ' Schreibe in die Spalten B, C, D, ...
        Next j
    Next i
End Sub

Dieses Makro zerlegt den Text in der ersten Spalte (A) in mehrere Zeilen und schreibt sie in die benachbarten Zellen.


Häufige Fehler und Lösungen

  1. Text bleibt in Zelle: Wenn der Text nicht umbricht, stelle sicher, dass die Zelle die Formatierung „Textumbruch“ aktiviert hat. Gehe zu „Start“ > „Ausrichtung“ und aktiviere das Kontrollkästchen „Textumbruch“.

  2. Zeichenlimits überschreiten: Wenn Du mehr als 60 Zeichen pro Zeile haben möchtest, achte darauf, die Logik im VBA-Code entsprechend anzupassen. Du kannst die Anzahl der Zeichen in der Zeile im Makro ändern.

  3. Keine Änderungen sichtbar: Überprüfe, ob Du die richtige Zelle bearbeitest und ob das Makro korrekt ausgeführt wird. Stelle sicher, dass Du mindestens zwei Zellen in Spalte A gefüllt hast.


Alternative Methoden

Eine weitere Möglichkeit, Absätze in Excel Zellen zu erstellen, ist die Verwendung der Funktion „Text in Spalten“:

  1. Markiere die Zelle oder den Bereich, der den mehrzeiligen Text enthält.
  2. Gehe zu „Daten“ > „Text in Spalten“.
  3. Wähle „Getrennt“ und klicke auf „Weiter“.
  4. Wähle „Andere“ und drücke ALT + 010 (Zahlen auf dem Ziffernblock).
  5. Klicke auf „Fertig stellen“. Der Text wird nun auf mehrere Zellen verteilt.

Praktische Beispiele

Wenn Du einen langen Text in einer Zelle hast, der mehr als 60 Zeichen umfasst, kannst Du diesen Code verwenden, um sicherzustellen, dass der Text in die Zeilen aufgeteilt wird, ohne mitten im Wort zu brechen:

Sub TextAufteilen()
    Dim txt As String
    Dim pos As Long
    Dim maxLen As Integer
    maxLen = 60 ' Maximal 60 Zeichen pro Zeile

    txt = Cells(1, 1).Value
    Do While Len(txt) > maxLen
        pos = InStrRev(Left(txt, maxLen), " ")
        If pos = 0 Then pos = maxLen ' Wenn kein Leerzeichen gefunden
        Cells(1, 2).Value = Left(txt, pos) ' Schreibe in die nächste Zelle
        txt = Mid(txt, pos + 1) ' Rest des Textes
    Loop
    Cells(1, 2).Value = Cells(1, 2).Value & txt ' Letzte Zeile hinzufügen
End Sub

Tipps für Profis

  • Nutze die Option „Textumbruch“ in der Zelle, um sicherzustellen, dass der gesamte Text sichtbar ist.
  • Verwende die Funktion LEN() in Excel, um die Anzahl der Zeichen in einer Zelle zu überprüfen.
  • Experimentiere mit bedingter Formatierung, um Zellen hervorzuheben, die länger als die gewünschte Zeichenanzahl sind.

FAQ: Häufige Fragen

1. Wie mache ich in Excel einen Zeilenumbruch?
Drücke ALT + ENTER, während Du in die Zelle schreibst.

2. Kann ich einen Zeilenumbruch in einer Zelle auch mit VBA erstellen?
Ja, Du kannst VBA verwenden, um Text in einer Zelle basierend auf bestimmten Bedingungen zu trennen.

3. Wie kann ich lange Texte in einer Zelle umbrechen?
Aktiviere die Funktion „Textumbruch“ in den Zellenformatierungen, um lange Texte automatisch umzubrechen.

4. Was mache ich, wenn der Text in einer Zelle länger als die Zelle ist?
Du kannst die Zelle erweitern oder die Textumbruch-Option aktivieren, um sicherzustellen, dass der gesamte Text sichtbar bleibt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige