Намного проще игнорировать записанный макрос и создавать модификацию с нуля.
Из вашего записанного макроса кажется, что ваши продукты разделены запятыми, хотя данные вашего примера показывают обратное.
Итак, если предположить, что это действительно так, то следующий код изменен для «разделения» продуктов на отдельные строки:
'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
Ключом, конечно же, является Split()
функция, которая преобразует строку продуктов, разделенных запятыми, в массив продуктов.
В этом случае достаточно просто вывести этот массив в соответствующий диапазон.
Обратите внимание, что если требуется другой разделитель, просто измените второй аргумент Split()
функции.