简单写了一段 VBA 代码,供你参考和调试:
Option Explicit
Sub test()
Dim LastRow As Long
Dim TempRow As Long
Dim Pointer As Integer
With ActiveSheet
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row '先获得 A 列最后一行的行号
For TempRow = LastRow To 2 Step 1
Pointer = 0 '指针初始化
If Trim(.Cells(TempRow, 2)) <> Trim(.Cells(TempRow, 6)) Then '如果 B 列与 F 列单元格的值不同
.Range("B" & TempRow & ",F" & TempRow).Interior.Color = 255 '把对应的单元格标识成红色
Else
Pointer = Pointer + 1 '否则指针加 1
End If
If Trim(.Cells(TempRow, 3)) <> Trim(.Cells(TempRow, 8)) Then '如果 C 列与 H 列单元格的值不同
.Range("C" & TempRow & ",H" & TempRow).Interior.Color = 5287936 '把对应的单元格标识成绿色
Else
Pointer = Pointer + 1 '否则指针加 1
End If
If Trim(.Cells(TempRow, 4)) <> Trim(.Cells(TempRow, 7)) Then '如果 D 列与 G 列单元格的值不同
.Range("B" & TempRow & ",F" & TempRow).Interior.Color = 49407 '把对应的单元格标识成橙色
Else
Pointer = Pointer + 1 '否则指针加 1
End If
If Pointer = 3 Then '三组对比完全一致
.Rows(TempRow).Delete '删除当前行
End If
Next TempRow
End With
End Sub
追问我运行后什么也没发生的?
追答With ActiveSheet
表示对当前活动工作表进行操作。如果你要比对的工作表不是当前活动工作表,那么就不会操作的。
还有,建议你使用 F8 键进行单步调试。