Добрый день. Есть строки с указанием количества позиций. Нужно сделать столько копий этой строки, сколько указанно в столбце количество. То есть 5 брюк, должно стать 5 строк с брюками.
Добрый день. Есть строки с указанием количества позиций. Нужно сделать столько копий этой строки, сколько указанно в столбце количество. То есть 5 брюк, должно стать 5 строк с брюками.fyx
Sub КопияСтрок() Dim i&, x& Application.ScreenUpdating = False For i = Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1 If Cells(i, 9) > 1 Then x = i + Cells(i, 9) - 1 Rows(i + 1 & ":" & x).Insert Shift:=xlDown Rows(i).Copy Rows(i + 1 & ":" & x).Select ActiveSheet.Paste End If Next Application.CutCopyMode = False Range("A2").Select Application.ScreenUpdating = True End Sub
[/vba]
Так пойдет? [vba]
Код
Sub КопияСтрок() Dim i&, x& Application.ScreenUpdating = False For i = Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1 If Cells(i, 9) > 1 Then x = i + Cells(i, 9) - 1 Rows(i + 1 & ":" & x).Insert Shift:=xlDown Rows(i).Copy Rows(i + 1 & ":" & x).Select ActiveSheet.Paste End If Next Application.CutCopyMode = False Range("A2").Select Application.ScreenUpdating = True End Sub
Sub CopyRows() Application.ScreenUpdating = False Dim i As Long For i = Columns(9).End(xlDown).Row To 2 Step -1 Rows(i).Copy Rows(i).Resize(Range("I" & i) - 1).EntireRow.Insert Range("I" & i).Resize(Range("I" & i)) = 1 Next i Application.CutCopyMode = False Application.ScreenUpdating = True End Sub
[/vba]
Еще вариант [vba]
Код
Sub CopyRows() Application.ScreenUpdating = False Dim i As Long For i = Columns(9).End(xlDown).Row To 2 Step -1 Rows(i).Copy Rows(i).Resize(Range("I" & i) - 1).EntireRow.Insert Range("I" & i).Resize(Range("I" & i)) = 1 Next i Application.CutCopyMode = False Application.ScreenUpdating = True End Sub
Все работает, единственный вопрос: если в столбце с количеством есть цифра 1, выскакивает ошибка! можно ли избавиться от этого таким образом, чтобы строка, которая должна повторяться только один раз, оставалась в единственном экземпляре, а другие строки копировались согласно указанному количеству?
Все работает, единственный вопрос: если в столбце с количеством есть цифра 1, выскакивает ошибка! можно ли избавиться от этого таким образом, чтобы строка, которая должна повторяться только один раз, оставалась в единственном экземпляре, а другие строки копировались согласно указанному количеству?iramikla
Sub CopyRows() Application.ScreenUpdating = False Dim i As Long For i = Columns(9).End(xlDown).Row To 2 Step -1 If Range("I" & i) > 1 Then Rows(i).Copy Rows(i).Resize(Range("I" & i) - 1).EntireRow.Insert Range("I" & i).Resize(Range("I" & i)) = 1 End If Next i Application.CutCopyMode = False Application.ScreenUpdating = True End Sub
[/vba]
можно так[vba]
Код
Sub CopyRows() Application.ScreenUpdating = False Dim i As Long For i = Columns(9).End(xlDown).Row To 2 Step -1 If Range("I" & i) > 1 Then Rows(i).Copy Rows(i).Resize(Range("I" & i) - 1).EntireRow.Insert Range("I" & i).Resize(Range("I" & i)) = 1 End If Next i Application.CutCopyMode = False Application.ScreenUpdating = True End Sub