我的excel数据看起来像这样
{name} {price} {quantity}
joe // 4.99 // 1
lisa // 2.99 // 3
jose // 6.99 // 1
是否很难制作一个能够取数量值的宏(" lisa // 3.99 // 3 ")并在其下方添加多行&#39 ; s当前位置。它将知道要复制哪些行,以及根据数量列插入的行数。
感谢阅读,反馈很有帮助。
答案 0 :(得分:0)
这将做你想要的,它自下而上轮询,如果遇到C中的数字,它是> 1然后它将插入等于C列编号的行数 - 1然后从主机行复制数据。
这将给你4个相等的行,其中C列中有4个,我想这就是你之后的那个?如果你想要添加等于C列的行数(那么值为4会添加4个新行,使得该条目的总计数变为5)然后让我知道,它将很简单地改变这个
Sub InsertRowsByQTY()
Dim X As Long
For X = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
If IsNumeric(Range("C" & X).text) Then
If Range("C" & X).Value > 1 Then
Rows(X + 1).Resize(Range("C" & X).Value - 1, Columns.Count).Insert
Range("A" & X + 1).Resize(Range("C" & X).Value - 1, Cells(X, Columns.Count).End(xlToLeft).column).Value = Range("A" & X).Resize(1, Cells(X, Columns.Count).End(xlToLeft).column).Value
End If
End If
Next
End Sub
答案 1 :(得分:0)
另一种方法:
Sub insert()
Dim lastrow As Integer, frow As Integer
lastrow = Range("C65536").End(xlUp).Row
frow = 0
For i = 2 To lastrow
If Cells(i, 3) > 1 Then
frow = frow + Cells(i, 3)
End If
Next i
For i = 2 To lastrow + frow
If Cells(i, 3) <> 1 Then
nr = Cells(i, 3)
Rows(i + 1 & ":" & i + nr).Select
Selection.insert Shift:=xlDown
Rows(i & ":" & i + nr).Select
Selection.FillDown
i = i + nr
End If
Next i
End Sub