Clever-Excel-Forum

Normale Version: Zelleninhalte splitten und nacheinander unter der Zelle einfügen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo! Ich bin mir gar nicht sicher, ob das von mir Geplante so überhaupt umsetzbar ist aber here we go:

Ich habe eine große Liste mit vielen Daten, welche innerhalb der Zellen getrennt sind durch "(1),(2),(3) etc.". Ich möchte gerne jeden einzelnen Unterpunkt innerhalb der Zellen zu einer eigenen Zelle machen, der Datensatz ist aber viel zu groß, um das manuell zu machen. Ist es möglich, mit einer Formel den Bereich nach einem "(n)" zu splitten, in die darunterstehende Zelle zu packen und das ganze für alle "(n)" zu wiederholen? 

Veranschaulichung (hoffentlich Confused ) ist anbei.
Hallo

versuch es mal hiermit.

in ein Normales Modul

Code:
Sub Trennen()
    Dim Sp As Integer, Z1 As Integer, LR As Integer, Anz As Integer, i As Integer
   
    Sp = 1 'Daten stehen in A
    Z1 = 2 'ggf wegen überschrift
   
    LR = Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
   
    'Bereich markieren
    For i = LR To Z1 Step -1
        Anz = Len(Cells(i, Sp)) - Len(Replace(Cells(i, Sp), ",", ""))
        Rows(i + 1).Resize(Anz).Insert
        Cells(i, Sp + 1).Resize(Anz + 1, 1) = WorksheetFunction.Transpose(Split(Cells(i, Sp), ","))
    Next
End Sub

LG UweD
Hallo Uwe und danke für deine Antwort!
Ich habe es geschafft die Zelleninhalte zu trennen und in jeweils eigene Zellen zu überführen und diese zu transponieren. Mir fehlt jetzt quasi nur noch ein Code, der die nebeneinanderstehenden Blöcke von Zellen alle untereinander aufreiht. Veranschaulichung wieder anbei. 

Ich glaube, dass das an sich nicht sehr komplex ist aber ich bin ein blutiger Anfänger mit VBA  22
Hallo nochmal

so?

Code:
Sub untereinander()
    Dim LC As Integer, LRx As Integer, LRz As Integer, Z1 As Integer, Sp As Integer, i As Integer
   
    Z1 = 2 'erste Datenzeile
    LC = Cells(Z1, Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile
   
    For i = 1 To LC
        LRx = Cells(Rows.Count, i).End(xlUp).Row 'letzte Zeile der Spalte
        LRz = Cells(Rows.Count, LC + 2).End(xlUp).Row
       
        Cells(LRz + 1, LC + 2).Resize(LRx - Z1 + 1, 1).Value = Cells(Z1, i).Resize(LRx - Z1 + 1, 1).Value
   
    Next
   
End Sub

LG UweD
Hast du ne Idee was ich hier falsch mache? Huh

Liebe Grüße
Hallo,

wenn du VBA nimmst, dann doch gleich eine VBA-Funktion. Gesplittet wird am Komma und der Anzahl der Teile (hier 4).
(s. Mappe)

Gruß Sigi
Das hab ich ja schon gelöst bekommen. Am Komma konnte ich nicht splitten, weil der Text innerhalb der Punkte Kommas enthielt, was zu splits an den falschen Stellen führte. Ich habe mit Suchen und ersetzen die Klammern samt Nummer durch "\" ersetzt, weil es im restlichen Dokument sonst nirgends vorkam und dann am \ gesplittet. Dadurch habe ich jetzt halt diese nebeneinanderstehenden Zellen und grüble grade daran wie ich die alle untereinander kriege.

Liebe Grüße
Hi,

würdest Du an Stelle der Bildchen eine Musterdatei mit den Wunschergebnissen vorstellen, wäre es leichter Dir zu helfen. Aber mit sinnvollen Ausdrücken und nicht wie in den bisher gezeigten Bildern!
Hi,

vielleicht hilft Dir das weiter:

Code:
Sub test()
Dim lngCount As Long
Dim lnglRow As Long
Dim lngTemp As Long
Dim ArrText As String
Dim ArrField() As String
lnglRow = Cells(Rows.Count, 1).End(xlUp).Row
    For lngCount = 1 To lnglRow
        ArrText = ArrText & Replace(Replace(Replace(Replace(Cells(lngCount, 1), "(1)", "#"), ",(2)", "#"), ",(3)", "#"), ",(4)", "#")
    Next
    Debug.Print ArrText
lngTemp = Len(ArrText) - Len(Replace(ArrText, "#", ""))


ReDim ArrField(lngTemp - 1)
ArrField = Split(ArrText, "#")

For lngCount = 0 To UBound(ArrField())
    Cells(lngCount + 1, 5) = ArrField(lngCount)
Next
   

End Sub
Ich glaube ich habe das ganze wirklich etwas konfus dargestellt. Sorry dafür!

Im Grunde brauche ich einen Code, der von der ersten Spalte an die Zellen von oben nach unten liest und Zellen, welche nicht leer sind ausschneidet und in der A-Spalte untereinander einfügt. Wenn dann eine leere Zelle gefunden wird soll zur nächsten Spalte übergegangen werden und so weiter.


Ich habe also eine große Menge an nebeneinander aufgelisteten Werten und möchte diese in einer einzigen Spalte (in diesem Fall A) untereinander aufführen.

Liebe Grüße
Seiten: 1 2