Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1544to1548
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

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

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

362 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige