Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1536to1540
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

Strings mehrfach in einer Zelle aufsplitten

Strings mehrfach in einer Zelle aufsplitten
01.02.2017 13:54:53
Chris
Hallo zusammen,
ich habe im Anhang eine Beispielmappe angehängt. In Spalte A befinden sich die Daten, wie sie derzeit vorliegen. Spalte B und C veranschaulicht die gewünschte Darstellung. Die Daten sollten nicht in mehrere Zeilen aufgeteilt werden.
Ich bräuchte eine VBA-Lösung. Habe aber keine Ahnung, wie ich das Ganze realisieren soll.
Vielen Dank im Voraus.
Grüße Chris
https://www.herber.de/bbs/user/111059.xlsx

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Strings mehrfach in einer Zelle aufsplitten
01.02.2017 14:13:34
ChrisL
Hi Chris
Sub t()
Dim ganzerBereich As Range, rng As Range
Dim ar1 As Variant, ar2 As Variant
Dim str1 As String, str2 As String
Dim i As Integer
Set ganzerBereich = Range("A1")
For Each rng In ganzerBereich
ar1 = Split(rng, Chr(10))
For i = 0 To UBound(ar1)
If Not ar1(i) = "" Then
If str1  "" Then
str1 = str1 & Chr(10)
str2 = str2 & Chr(10)
End If
ar2 = Split(ar1(i), ":")
str1 = str1 & ar2(0)
str2 = str2 & ar2(1)
End If
Next i
rng.Offset(0, 1) = Replace(Replace(str1, "[", ""), "]", "")
rng.Offset(0, 2) = Replace(Replace(str2, "[", ""), "]", "")
Next rng
End Sub

cu
Chris
Anzeige
AW: Strings mehrfach in einer Zelle aufsplitten
01.02.2017 14:23:46
Chris
Danke für die schnelle Antwort, Chris!
Tut was es soll (für eine Zeile), perfekt.
Habe meine Beispielmappe vielleicht zu mager mit Daten bestückt.
Es sind natürlich mehrere Zeilen, für die das passieren sollte.
Wär nochmal nett, wenn du das für mehrere Zeilen noch posten könntest.
Grüße Chris
Nimm meine Fml nebst UDFs! ;-) owT
01.02.2017 14:29:24
Luc:-?
:-?
AW: Strings mehrfach in einer Zelle aufsplitten
01.02.2017 14:49:43
ChrisL
Hi Chris
"ganzerBereich" kannst du anpassen.
Set ganzerBereich = Range("A1:A100")
oder
Set ganzerBereich = Range("A1:A" & Cells(Rows.Count,1).End(xlup).Row)
cu
Chris
AW: Strings mehrfach in einer Zelle aufsplitten
01.02.2017 15:00:49
Chris
Ja, dann kopiert er aber immer noch den vorigen Wert aus dem Array in die Zeilen mit ;).
Anzeige
AW: Strings mehrfach in einer Zelle aufsplitten
01.02.2017 15:56:50
ChrisL
Nicht aus dem Array aber dem String ;)
Sub t()
Dim ganzerBereich As Range, rng As Range
Dim ar1 As Variant, ar2 As Variant
Dim str1 As String, str2 As String
Dim i As Integer
Set ganzerBereich = Range("A1:A3")
For Each rng In ganzerBereich
str1 = "": str2 = ""
ar1 = Split(rng, Chr(10))
For i = 0 To UBound(ar1)
If Not ar1(i) = "" Then
If str1  "" Then
str1 = str1 & Chr(10)
str2 = str2 & Chr(10)
End If
ar2 = Split(ar1(i), ":")
str1 = str1 & ar2(0)
str2 = str2 & ar2(1)
End If
Next i
rng.Offset(0, 1) = Replace(Replace(str1, "[", ""), "]", "")
rng.Offset(0, 2) = Replace(Replace(str2, "[", ""), "]", "")
Next rng
End Sub

Anzeige
Mit UDFs aus dem Archiv ist das nicht sonderlich …
01.02.2017 14:28:15
Luc:-?
…schwer, Chris,
mit folgender MatrixFml über die beiden Zellen:
B1:C1: {=WECHSELN(VJoin(INDEX(VSplit(VSplit(MaskOn(A1;"gb";":"));":");0;SPALTE(A1:B1)));" ";ZEICHEN(10))}
Links:
VJoin & VSplit: https://www.herber.de/bbs/user/99024.xlsm (UDF-Pgmm in BspMappe)
MaskOn: https://www.herber.de/cgi-bin/callthread.pl?index=1344962#1345181 (UDF-Pgm im Beitrag)
Feedback nicht unerwünscht! Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: Mit UDFs aus dem Archiv ist das nicht sonderlich …
01.02.2017 14:29:35
Chris
Danke für die Hilfe und Links, Luc!
Bitte sehr! Die UDFs sind auch für andere, ...
01.02.2017 14:33:22
Luc:-?
…ähnliche Aufgaben verwendbar, Chris!
Luc :-?
AW: Strings mehrfach in einer Zelle aufsplitten
01.02.2017 14:44:18
Daniel
Hi
das gezeigte Problem lässt sich mit Exceltools eigentlich ganz einfach lösen, zumindest wenn das ganze nur in zwei Spalten geteilt werden muss. Du kannst damit beliebig viele Zeilen bearbeiten
1. kopiere Spalte A nach Spalte B
2. ersetze in Spalte A den Text :*] durch nichts
3. ersetze in Spalte B den Text [*: durch nichts
4. ersetze in Spalte A [ durch nichts
5. ersetze in Spalte B ] durch nichts
"*" ist beim Ersetzen der Joker für beliebig viele Zeichen, dh du löschst immer den Text zwischen Doppeltunkt und eckiger klammer, bzw den Text zwischen Klammer und Doppelpunkt
geht natürlich auch als Code
Columns(1).Copy Columns(2)
Columns(1).Replace ":*]", "", xlpart
Columns(1).Replace "[", "", xlpart
Columns(2).Replace "[*:", "", xlpart
columns(2).replace "]", "", xlpart
Gruß Daniel
Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige