使用单元格的数字插入那么多行(带有该行的数据)

时间:2015-06-22 23:34:13

标签: excel excel-vba vba

我的excel数据看起来像这样

{name} {price} {quantity}

joe // 4.99 // 1

lisa // 2.99 // 3

jose // 6.99 // 1

是否很难制作一个能够取数量值的宏(" lisa // 3.99 // 3 ")并在其下方添加多行&#39 ; s当前位置。它将知道要复制哪些行,以及根据数量列插入的行数。

感谢阅读,反馈很有帮助。

2 个答案:

答案 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