如何使用VBA宏逐步执行excel行,并在值更改时插入重复行

时间:2015-03-12 05:48:21

标签: excel vba excel-vba

我需要在列表中的下一个值更改之前插入一条附加记录。

1   4   j
2   4   g
3   5   h
4   5   f
5   5   v
6   5   y
7   5   f
8   6   f
9   6   g
10  8   j

即第2,第7,第9行将被复制并插入下一行之前。注意工作是自下而上的。我想也许Selection.Offset(1,0)。选择

Sub InsertRowsWithNewValues()
' Note: hard coded to "Sheet1", ChkCol
    Dim LastRowcheck As Long, n1 As Long, ChkCol As Long

ChkCol = 2
MsgBox ("Execute on column: " + Str(ChkCol))

    With Worksheets("Sheet1")
        LastRowcheck = .Range("A" & .Rows.Count).End(xlUp).Row
        For n1 = LastRowcheck To 3 Step -1
MsgBox (.Cells(n1, ChkCol).Value + " " + .Cells(n1 - 1, ChkCol).Value)
            If .Cells(n1, ChkCol).Value <> Cells(n1 - 1, ChkCol).Value Then
               .Rows(n1).Insert
               .Rows(n1 - 1).Select
                Selection.Copy
                Selection.Insert
'               .Rows(n1).Paste
            End If
        Next n1
    End With
End Sub

Reference Here2

1 个答案:

答案 0 :(得分:0)

可以在没有VBA的情况下实现,假设h在B3中:

选择ColumnsA:B,DATA&gt;大纲 - 小计在每次更改时:4,使用函数:计数,添加小计到:勾选j,勾选替换当前小计,勾选下面的数据摘要,确定。

过滤列A:B,对于ColumnA选择数字过滤器,自定义过滤器...,包含,c,确定,删除所有在Row1下方可见,过滤(全选),选择ColumnsA:B,HOME&gt ;编辑 - 查找&amp;选择,转到特殊...,选择空白,确定。

=,向上,按Ctrl + Enter。删除过滤器,选择整张纸,DATA&gt;大纲 - 取消组合,清除大纲。删除底部的任何盈余。