Excel 宏 - 复制行 -> 在下方插入行 -> 粘贴数据

Excel Macro - Copy Row -> Insert Row under -> Paste data

我有一个代码贯穿 E 列(下面示例中的 C 列)并搜索数据中的任何更改。然后它在该更改下插入一个空白行并循环遍历数据集(200-500 行长)。我正在寻找一种方法 modify/add 将更改前最后一行数据的“复制和粘贴”功能编码到新插入的行中。

之前:

Column A Column B Column C Column E
1 2 Sally 5
1 2 Sally 6
1 2 Sally 2
1 2 Chase 1
1 2 Chase 4
1 2 Ben 9

之后:

Column A Column B Column C Column E
1 2 Sally 5
1 2 Sally 6
1 2 Sally 2
2 Sally
1 2 Chase 1
1 2 Chase 4
2 Chase
1 2 Ben 9
2 Ben

对不起。新来的。我目前的代码有一个循环。见下图:

Sub CleanUpPart2()

'Insert Rows by column F

'
    Dim iRow As Integer, iCol As Integer
    Dim oRng As Range

    Set oRng = Range("f1")

    iRow = oRng.Row
    iCol = oRng.Column

    Do
'
    If Cells(iRow + 1, iCol) <> Cells(iRow, iCol) Then
        Cells(iRow + 1, iCol).EntireRow.Insert Shift:=xlDown
        iRow = iRow + 2
    Else
        iRow = iRow + 1
    End If
'
    Loop While Not Cells(iRow, iCol).Text = ""
'

已编辑:

请尝试更新后的代码:

Sub testInsertRowCopyBefore()
  Dim sh As Worksheet, lastRow As Long, i As Long
  
  Set sh = ActiveSheet
  lastRow = sh.Range("A" & Rows.count).End(xlUp).row
  
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual
   For i = lastRow + 1 To 3 Step -1
    If sh.Range("C" & i).Value <> sh.Range("C" & i - 1).Value Then
        sh.Range("C" & i).EntireRow.Insert xlUp
        sh.Range("B" & i & ":C" & i).Value = sh.Range("B" & i - 1 & ":C" & i - 1).Value
    End If
   Next i
  Application.ScreenUpdating = True
  Application.Calculation = xlCalculationAutomatic
  MsgBox "Ready..."
End Sub

以上代码假定“A 列”、“B 列”和“C 列”为 headers,它们位于 sheet 第一行。

请测试并发送一些反馈