Forum Discussion
leocsmith1640
Jul 21, 2022Copper Contributor
How to duplicate rows based on cell values on that same row
Hi everyone, This is a request that I received from my company, I've worked with excel for years but have never seen something like this. I need to double or triple a row based on values from...
- Jul 21, 2022
Sub expand() Dim i As Long Dim k As Long Dim maxrow As Long Range(Cells(2, 11), Cells(2000, 19)).Clear maxrow = Cells(Rows.Count, 1).End(xlUp).Row k = 2 For i = 2 To maxrow If Cells(i, 5).Value > 0 And Cells(i, 6).Value > 0 And Cells(i, 7).Value > 0 Then Sheets("Tabelle1").Range(Cells(i, 1), Cells(i, 9)).Copy Sheets("Tabelle1").Range(Cells(k, 11), Cells(k, 19)) Range(Cells(k, 16), Cells(k, 17)).Clear Sheets("Tabelle1").Range(Cells(i, 1), Cells(i, 9)).Copy Sheets("Tabelle1").Range(Cells(k + 1, 11), Cells(k + 1, 19)) Cells(k + 1, 15).Clear Cells(k + 1, 17).Clear Sheets("Tabelle1").Range(Cells(i, 1), Cells(i, 9)).Copy Sheets("Tabelle1").Range(Cells(k + 2, 11), Cells(k + 2, 19)) Cells(k + 2, 15).Clear Cells(k + 2, 16).Clear k = k + 3 Else If Cells(i, 5).Value > 0 And Cells(i, 6).Value > 0 Then Sheets("Tabelle1").Range(Cells(i, 1), Cells(i, 9)).Copy Sheets("Tabelle1").Range(Cells(k, 11), Cells(k, 19)) Cells(k, 16).Clear Sheets("Tabelle1").Range(Cells(i, 1), Cells(i, 9)).Copy Sheets("Tabelle1").Range(Cells(k + 1, 11), Cells(k + 1, 19)) Cells(k + 1, 15).Clear k = k + 2 Else Sheets("Tabelle1").Range(Cells(i, 1), Cells(i, 9)).Copy Sheets("Tabelle1").Range(Cells(k, 11), Cells(k, 19)) k = k + 1 End If End If Next i End Sub
You can try these lines of code. In the attached file you can click the button in cell U4 to run the macro.
OliverScheurich
Jul 21, 2022Gold Contributor
Sub expand()
Dim i As Long
Dim k As Long
Dim maxrow As Long
Range(Cells(2, 11), Cells(2000, 19)).Clear
maxrow = Cells(Rows.Count, 1).End(xlUp).Row
k = 2
For i = 2 To maxrow
If Cells(i, 5).Value > 0 And Cells(i, 6).Value > 0 And Cells(i, 7).Value > 0 Then
Sheets("Tabelle1").Range(Cells(i, 1), Cells(i, 9)).Copy Sheets("Tabelle1").Range(Cells(k, 11), Cells(k, 19))
Range(Cells(k, 16), Cells(k, 17)).Clear
Sheets("Tabelle1").Range(Cells(i, 1), Cells(i, 9)).Copy Sheets("Tabelle1").Range(Cells(k + 1, 11), Cells(k + 1, 19))
Cells(k + 1, 15).Clear
Cells(k + 1, 17).Clear
Sheets("Tabelle1").Range(Cells(i, 1), Cells(i, 9)).Copy Sheets("Tabelle1").Range(Cells(k + 2, 11), Cells(k + 2, 19))
Cells(k + 2, 15).Clear
Cells(k + 2, 16).Clear
k = k + 3
Else
If Cells(i, 5).Value > 0 And Cells(i, 6).Value > 0 Then
Sheets("Tabelle1").Range(Cells(i, 1), Cells(i, 9)).Copy Sheets("Tabelle1").Range(Cells(k, 11), Cells(k, 19))
Cells(k, 16).Clear
Sheets("Tabelle1").Range(Cells(i, 1), Cells(i, 9)).Copy Sheets("Tabelle1").Range(Cells(k + 1, 11), Cells(k + 1, 19))
Cells(k + 1, 15).Clear
k = k + 2
Else
Sheets("Tabelle1").Range(Cells(i, 1), Cells(i, 9)).Copy Sheets("Tabelle1").Range(Cells(k, 11), Cells(k, 19))
k = k + 1
End If
End If
Next i
End Sub
You can try these lines of code. In the attached file you can click the button in cell U4 to run the macro.
- leocsmith1640Jul 21, 2022Copper Contributor