Не могу решить вопрос автоматической обработки файла с копированием строк указанное число раз. И проставлением номера каждой продублированной строки. Нашел похожую тему(http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=1&TID=48043 http://planetaexcel.ru/forum/?PAGE_NAME=read&FID=1&TID=48811), но не получается ее применить, с макросами сложно совладать. Можно сделать вручную, но в файле 3600 строк при дублировании должно получиться около 14 тыс, понимаю что займет много времени, поэтому прошу помощи.
Будет медленно. Поэтому вывел индикацию в статусбар. Но на массивах код был бы кажется сложнее...
Код
Sub tt()
Dim r As Range, rr As Range
Dim i&, ii&, x&
Application.ScreenUpdating = False
Set r = [a1].CurrentRegion
With Workbooks.Add(1).Sheets(1)
x = x + 1
r.Rows(1).Copy .Cells(x, 1)
For i = 2 To r.Rows.Count
Application.StatusBar = "Обработка строки " & i
For ii = r.Rows(i).Cells(7).Value To 1 Step -1
x = x + 1: r.Rows(i).Copy .Cells(x, 1): .Cells(x, 7) = ii
Next
Next
End With
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub
То есть надо развернуть каждую строку по этажам? См.пример... Учтите, что макрос берет данные с листа "Sheet1" и записывает результат на лист "Sheet2", предварительно очистив его.
Sub tt()
Dim a, m&, i&, ii&, x&, y&
Set a = [a1].CurrentRegion
m = Application.Sum(a.Columns(7))
ReDim b(1 To m + 1, 1 To 9)
a = a.Value: y = y + 1
For x = 1 To 9: b(y, x) = a(y, x): Next: x = 0
For i = 2 To UBound(a)
If i Mod 10 = 0 Then Application.StatusBar = "Обработка строки " & i
For ii = a(i, 7) To 1 Step -1
y = y + 1
For x = 1 To 9: b(y, x) = a(i, x): Next: x = 0
b(i, 7) = ii
Next
Next
Workbooks.Add(1).Sheets(1).[a1].Resize(y, 9) = b
Application.StatusBar = False
End Sub
StatusBar всё же оставил - пусть. Хотя и чуть тормозит. А отключение screenupdating за ненадобностью убрал.
Помогите, пожалуйста, и мне с этим вопросом Я совершенно не понимаю в макросах ничего. Прикладываю файл с задачей, нужно также повторить строку с информацией о товаре то количество раз, которое стоит в ячейке "кол-во"