答案1
Sub shift_cells()
Dim i As Integer
For i = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
If Cells(i, 5).Value <> Cells(i, 5).Offset(-1, 0).Value Then
Range(Cells(i, 1), Cells(i, 5)).Insert shift:=xlDown
End If
Next
End Sub
答案2
:警告:
由于 D 列和 E 列有重复,因此为了获得正确的结果,我使用 A 列来比较值并插入空白行,因为它具有唯一的 ID。
- 事实上需要插入一个空白行(查看所附的屏幕截图),如果且当先前的值与当前值不相似时。
Private Sub CommandButton1_Click()
Dim iRow As Integer, iCol As Integer
Dim oRng As Range
Set oRng = Range("A2")
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 = ""
End Sub
注意:
- 上面的代码
Range("A2")
是可编辑的。 - 将 WB 保存为宏启用
*.xlsm
。