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.
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.
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.
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
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.
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
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)
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.
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
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.
Daten, Text in Spalten drücken und und die Schritte abarbeiten.
Jetzt müssten die Zellen B17/B18 usw. in C17/D17 usw. stehen.
gruß
Udo
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.
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
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 ;(
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)