Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zelleninhalte splitten und nacheinander unter der Zelle einfügen
#1
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.


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#2
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
Antworten Top
#3
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


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#4
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
Antworten Top
#5
Hast du ne Idee was ich hier falsch mache? Huh

Liebe Grüße


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#6
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


Angehängte Dateien
.xlsm   TextSpitten.xlsm (Größe: 15,66 KB / Downloads: 3)
Antworten Top
#7
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
Antworten Top
#8
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!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#9
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
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#10
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste