Wie teile ich Zellen in Excel

Hallo,

Problem ist, ich habe eine Excel-Datei mit Zellen, in denen Text untereinander mit Zeilenumbrüchen steht.

Nun soll der Inhalt der Zelle (jede Zeile) eine eigene Zelle werden. Diese soll nicht untereinander, sonder nebeneinander ausgegeben werden!

Probiert habe ich es schon mit in Word einfügen und „Tabelle in Text“ und mit „Daten-Text in Spalten“
-> funzelt nur leider nicht so wie ich das gern hätte!

Kann man das per VBA machen???

Tabllenausschnitt (Beispiel):
B17:

WS/WE24-2R 240
Einweg-Lichtschranke
Robustes Metallgehäuse
Reichweite 0-60 m
Empfindlichkeit einstellbar
Versorgungsspannung: DC 12…240V, AC 24…240V
Hohe Funktionsreserve in sichtbarem Rotlicht
PG-Verschraubung um 90 Grad drehbar
B x H x T: 27 x 87,5 x 65 mm

B20:

Ticketlocher mit Zählwerk
Ticketlocher (1 Loch)
für Magnetstreifentickets,
mit Sammelbehälter für Stanzrest
Material: Edelstahl. elektolytisch poliert

…soll getrennt werden und in die Zellen C17,D17,E17… oder entsprechend C20,D20,E20… eingefügt werden.

Hallo Chris,

ich vermute, dass der Weg des geringsten Widerstands der über das csv-Format ist. Allerdings bin ich momentan ziemlich im Stress, dass ich es nicht ausprobieren kann.
Wenn Dein Problem morgen noch nicht gelöst ist, melde Dich nochmal, da sollte ich eher Zeit haben.

Viel Erfolg + viele Grüße

Tanja

Hier eine Function von mir:

Function TrenneZeilen(TeilZeile, SammelText)
For I = 1 To Len(SammelText)
 CheckChar = Mid(SammelText, I, 1)
 CheckAsc = Asc(CheckChar)
 If CheckAsc = 10 Then
 CountTrenn = CountTrenn + 1
 If CountTrenn = TeilZeile Then
 Exit Function
 Else
 TrenneZeilen = ""
 End If
 Else
 TrenneZeilen = TrenneZeilen & CheckChar
 End If
Next I
End Function

Die Function setzt Du z.B. in C17 und willst dort die erste Zeile haben: =TrenneZeilen(1, $B17) in diese Zelle.
=TrenneZeilen(2, $B17) in D17 für die zweite Zeile usw.
=TrenneZeilen(1;$B20) in C20 usw.

Hoffe war verständlich.
Sonst nochmals fragen.

Hallo Chris,
hab nur eine etwas umständliche Methode gefunden:
mit Makro alle Zeilenumbrüche durch ein @ ersetzen und dann im Menü Daten > ‚Text in Spalten‘ getrennt > bei andere Trennzeichen das @ eingeben > Fertigstellen
-teilt den Text auf die Spalten auf
Gruß
Brandis

Sub BeispielCode()
Dim Regex As Object
Dim meAr()
Dim nCount&, MaxRow&

With Sheets(„Tabelle1“)

MaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row

If MaxRow > 2 Then
meAr = .Range(„A2“, .Cells(MaxRow, 1)).Value2
Else
meAr = .Range(„A2“, .Cells(MaxRow, 1)).Resize(, 2).Value2
ReDim Preserve meAr(1 To UBound(meAr), 1 To 1)
End If

Set Regex = CreateObject(„Vbscript.Regexp“)

With Regex
.MultiLine = True
.Pattern = „\n“
.Global = True

For nCount = 1 To UBound(meAr)
'ersetze Zeilenumbruch durch nichts oder ein anderes Zeichen
meAr(nCount, 1) = .Replace(meAr(nCount, 1), „@“)
Next nCount
End With
.Range(„A2“).Resize(UBound(meAr)) = meAr
End With
End Sub

Hallo Chris,
das einfachste ist die Zelle B17, markieren, kopieren und mit „An Zielformatierung anpassen“ ,bei z.B. C17, einfügen.
Jetzt sieht die Sache so aus :

C17: WS/WE24-2R 240
C18: Einweg-Lichtschranke
C19: Robustes Metallgehäuse

C25: B x H x T: 27 x 87,5 x 65 mm

Jetzt die 9 Zellen C17 bis C25 markieren, kopieren und
mit Transponieren einfügen und schon sind alle Einzelzellen in einer Zeile.

Gruß Bussi

Hallo Chris_85
Kopiere die Sachen in Word, ersetze Zeilenumbrüche (^p) durch Tab (^t), ersetze dann Doppel-Tab (^t^t) durch einen Zeilenumbruch.
Viel Erfolg! Gruss, Rolf

Hallo Chris_85,

aufteilen deine Zellenwerte kannst du so:

 Cells(17, 2).Select
 c\_text = Selection.Value
 For Each s In Split(c\_text, vbLf)
 Selection.Value = s
 Selection.Offset(0, 1).Select
 Next

Um diesen Code herum muss noch eine Schleife gelegtwerden, die dann die Zeileniteration macht. Bei der Split-Anweisung müsstest du ewentuell vbLf mit einem anderen Delimiterzeichen ersetzen(das was in deine Excel-Datei verwendet wird)

MfG.
W.W.

Hallo ,
Markiere die Zelle mit den Textwerten.
Anmerkung Rechts neben der markierten Zelle müssen die anzahl Zellen frei sein die übertragen werden, andernfalls werden die Daten überschrieben.

Klicke im Menü Daten auf Text in Spalten.

Folge den Anweisungen des Textkonvertierungs-Assistenten, um festzulegen, wie der Text in Spalten aufgeteilt werden soll.

Anmerkung ich habe festgestellt, wenn feste Breite ausgewählt wird und nach jeder Zeile 2 Leerzeichen stehen, können die Felder eingacher definiert werden. Und weil jede Zelle unterschidliche Text innhalte hat kann dieses Verfahren nicht auf die gesammte Spalte in einem angewendet werden.

Hallo Chris,

hier ein Makro, um den Zellinhalt an den Zeilenschaltungen zu splitten und auf mehrer Zellen zu verteilen.

Gruß
Franz

'Erstellt unter Excel 2010
'Vor der Ausführung des Makros die Zelle(n) selektieren, deren Inhalt an
'den ZeilenSchaltungen gesplittet und in den rechten Nachbarzellen eingefügt
'werden soll
Sub Splitten\_an\_ZeilenTrennung()
 Dim rngZellen As Range, rngZelle As Range
 Dim varTexte As Variant, intSpalten As Integer, Spalte\_1 As Long
 Set rngZellen = Selection
 Spalte\_1 = rngZellen.Column
 Application.ScreenUpdating = False
 If Selection.Columns.Count = 1 Then
 For Each rngZelle In Selection.Cells
 If Spalte\_1 = rngZelle.Column Then
 If InStr(1, rngZelle.Text, Chr(10)) \> 0 Then
 varTexte = VBA.Split(rngZelle.Text, Chr(10))
 With rngZelle
 .Offset(0, 1).Resize(1, UBound(varTexte) + 1).Value = varTexte
 End With
 Else
 rngZelle.Offset(0, 1).Value = rngZelle.Value
 End If
 Else
 If MsgBox(rngZelle.Address & " ist nicht in Spalte " & Spalte\_1 & vbLf \_
 & "Zellinhalt wird nicht gesplittet!", vbInformation + vbRetryCancel, \_
 "Makro: Splitten\_an\_ZeilenTrennung") = vbCancel Then Exit For
 End If
 Next
 Else
 MsgBox "Für diese Makro dürfen vor der Ausführung nur Zellen in einer " \_
 & "Spalte selektiert werden", \_
 vbInformation + vbOKOnly, "Makro: Splitten\_an\_ZeilenTrennung"
 End If
 Application.ScreenUpdating = True
End Sub

Hallo Chris,
probier folgendes

  1. Zelle B17/B18/B19/B29 markieren:WS/WE24-2R 240
  2. Bearbeiten und auf Karteireiter „Suchen“ klicken, dann StrgJ drücken. Jetzt steht in dem Feld ein Punkt, ist aber das Zeichen CR.
    Jetzt auf Karteireiter „Ersetzen“ klicken und ein Semikolon eingeben. Dann alle ersetzen drücken.
  3. Daten, Text in Spalten drücken und und die Schritte abarbeiten.
  4. Jetzt müssten die Zellen B17/B18 usw. in C17/D17 usw. stehen.
    gruß
    Udo

Grüezi Chris

Nun soll der Inhalt der Zelle (jede Zeile) eine eigene Zelle
werden. Diese soll nicht untereinander, sonder nebeneinander
ausgegeben werden!

Probiert habe ich es schon mit in Word einfügen und „Tabelle
in Text“ und mit „Daten-Text in Spalten“
-> funzelt nur leider nicht so wie ich das gern hätte!

Was genau funktionert da denn nicht?

Wenn Du den Zeilenumbruch als Trennzeichen bei Text in Spalten verwendest, dann müsste das meiner Ansicht nach richtig tun.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Chris,

habs probiert bekommen keine brauchbare Lösung hin.

Gruß Hugo

Hallo, also der erste Teil funktioniert, jedoch wenn ich in „Daten-Text in Spalten“ gehe und diesen Schritt gehe, löscht sich das Ursprungsfeld und der Text ist quai weg ;(

Hallo Chris,
den ersten Teil hast Du ja schon gemacht nun zum zweiten Teil:
versuch es noch einmal
also die Daten stehen alle in Spalte A,
Beispiel:
WS/WE24-2R 240
Einweg Lichtschranke
Reichweite 0-60 m
Empfindlichkeit einstellbar
Hohe Funktionsreserve

  • dann die Spalte A markieren
    anschließend den Reiter Daten anklicken und Text in Spalten auswählen,
  • dann „Getrennt“ anklicken
  • dann „Semikolon“ anklicken
  • dann den Bereich ändern „$A$1“ in „$B$1“
    die Spalte A bleibt unberührt.
    in den Spalten B/C/D/usw müssten jetzt die Texte stehen.
    Bei mir funktioniert es.
    Gruß
    Udo
1 Like

Also nach dem ersetzen durch etc. hab ich jetzt folgendes in der Zelle stehen…

Easy Move EM 100 mit Antenne EMA 90-2
; Zur berührungslosen Einfahrtkontrolle von
; Dauerparker- und Wertkarten.
; Verschleiß- und wartungsfrei.
; Reichweite ca. 5 - 10 cm

wenn ich jetzt Daten in Spalten mache, setzt er mir „Easy Move EM 100 mit Antenne EMA 90-2“ in die Zelle rechts daneben, der Rest wird nicht angezeigt ;(

I wie will das nicht ;(((

Hallo Chris,
kannst Du mir die Tabelle mal schicken?
Gruß
Udo

Hallo,
versuche es mal mit diesem VBA-Script.
Es bezieht sich in meinem Beispiel auf
Einträge in Spalte B:

Sub Zeilenumbruch()
LZ = [A65536].End(xlUp).Row
Start = 1
For i = 1 To LZ
Wert = Cells(i, 2).Value
Länge = Len(Wert)
For x = 1 To Länge
Zeichen = InStr(Start, Wert, Chr(10), 1)
Wort = Mid(Wert, 1, Zeichen - 1)

FreieSpalte = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Cells(i, FreieSpalte).Value = Wort

x = x + Zeichen
Wert = Mid(Wert, Zeichen + 1, Länge)

Next x

weiter:
Next i

End Sub

Feedback wäre schön !!!
Gruß,
Jochen

Sorry, ich weiss da nicht was Du tun willst. zum trennen der Strings kannst Du den Befehl Split(string,delimiter) nehmen.
Grüsse Sebastian