Добрый день! Есть большой файл ексель, здесь прикрепляю файл Пример. Нужно из вкладки Лист1 перенести данные на вкладку Лист2 в каждую табличку так, как показано в первых табличках. Данные на вкладке Лист1 отсортированы по названию. Как можно это сделать макросом или формулой?
Да, нужно именно перенести. В каждой отдельной табличке должны быть по 3 товара, которые отличаются размером (столбец Название товара). Эти товары отсортированы на вкладке Лист1 и идут подряд
Nick Vector, чет смотрю не пойму - сгруппировать по параметру (Размер) ....но там нет нигде такого параметра, в моем понимание это одинаковый размер должен быть вместе...опишите словами задачу пожалуйста, всегда по 3 строки? и всегда идет "003" "AM PM " и т.д. в кавычках?
Mershik, обновил файл. На вкладке Лист1 название (отличаются концовкой размером), идут по 3 шт. Их нужно скопировать в отдельные таблички на вкладке Лист2. Первые 2 я заполнил для примера, как должно быть.
Sub dsd()
Dim sh As Worksheet, result As Worksheet, lr As Long, i As Long, shapka
shapka = Array("ID товара", "ID товара у продавца", "Название товара")
Set sh = Worksheets("Лист1"): Set result = Worksheets("Лист2")
lr = sh.Cells(Rows.Count, 1).End(xlUp).Row
K = 1
For i = 2 To lr Step 3
result.Range("A" & K & ":C" & K) = shapka
sh.Range(sh.Cells(i, 1), sh.Cells(i + 2, 3)).Copy Destination:=result.Cells(K + 1, 1)
K = K + 5
Next i
End Sub
Sub dsd()
Dim sh As Worksheet, result As Worksheet, lr As Long, i As Long, shapka
shapka = Array("ID товара", "ID товара у продавца", "Название товара")
Set sh = Worksheets("Лист1"): Set result = Worksheets("Лист2")
lr = sh.Cells(Rows.Count, 1).End(xlUp).Row
result.Range("A:C").Clear
k = 1
For i = 2 To lr
For Z = 1 To Len(sh.Cells(i, 3))
If Mid(sh.Cells(i, 3), Z, 1) = Chr(34) Then
If x = 0 Then
x = Z
Else
x2 = Z
s = Application.WorksheetFunction.CountIf(sh.Columns(3), Mid(sh.Cells(i, 3), 1, x2) & "*") - 1
result.Range("A" & k & ":C" & k) = shapka
sh.Range(sh.Cells(i, 1), sh.Cells(i + s, 3)).Copy Destination:=result.Cells(k + 1, 1)
x = 0: k = result.Cells(Rows.Count, 1).End(xlUp).Row + 2: i = i + s
Exit For
End If
End If
Next Z
Next i
End Sub