Es ist viel einfacher, das aufgezeichnete Makro zu ignorieren und die Modifikation von Grund auf zu erstellen.
In Ihrem aufgezeichneten Makro sieht es so aus, als wären Ihre Produkte durch Kommas getrennt, auch wenn Ihre Beispieldaten etwas anderes zeigen.
Vorausgesetzt, dass dies tatsächlich der Fall ist, wird der Code so geändert, dass die Produkte in separate Zeilen "aufgeteilt" werden:
'v0.1.0 Dim i As Long Dim col As Integer Dim DB_Sheet, Rec_Sheet As Object Set DB_Sheet = ThisWorkbook.Worksheets("Sheet3") Set Rec_Sheet = ThisWorkbook.Worksheets("Sheet2") col = 1 For i = 2 To DB_Sheet.Range("A" & Rows.Count).End(xlUp).Row If DB_Sheet.Rows(i).Hidden = False Then Rec_Sheet.Cells(1, col) = DB_Sheet.Cells(i, 7) Rec_Sheet.Cells(2, col) = DB_Sheet.Cells(i, 8) Rec_Sheet.Cells(3, col) = DB_Sheet.Cells(i, 6) Rec_Sheet.Cells(4, col) = DB_Sheet.Cells(i, 9) Dim varProducts As Variant varProducts = Split(DB_Sheet.Cells(i, 5).Value2, ",") Rec_Sheet.Cells(5, col).Resize(RowSize:=UBound(varProducts) - LBound(varProducts) + 1).Value2 _ = WorksheetFunction.Transpose(varProducts) col = col + 1 End If Next i
Der Schlüssel ist natürlich die Split()
Funktion, die die Zeichenfolge von durch Kommas getrennten Produkten in ein Array von Produkten konvertiert.
Es ist dann eine einfache Sache, dieses Array in den entsprechenden Bereich auszugeben.
Wenn ein anderes Trennzeichen erforderlich ist, ändern Sie einfach das zweite Argument der Split()
Funktion.