我有一个包含三列的列表。第一列包含名称,其他两列包含数字。该宏获取第一个名称 (A1),然后在 A 列中搜索另一个出现的名称。
当它找到它时,它会删除整行。然后它会转到 A2 并再次执行相同的操作。对于大约 500 个条目,它可以正常工作,但使用 3000 个条目会大大减慢速度。有没有办法加快这段代码的速度?
Sub Button1_DeleteRow()
Dim i As Integer
Dim j As Integer
Dim Value As Variant
Dim toCompare As Variant
For i = 1 To 3000
Value = Cells(i, 1)
For j = (i + 1) To 3000
toCompare = Cells(j, 1)
If (StrComp(Value, toCompare, vbTextCompare) = 0) Then
Rows(j).EntireRow.Delete
End If
Next j
Next i
End Sub
最佳答案
如果您运行的是 xl07/10,那么您可以使用删除重复项
使用一行来完成此操作。如果您运行的是 03,那么使用 AutoFilter 的解决方案将是最有效的(如果您使用的是旧版本,我可以提供此解决方案)
删除重复项
手动
- 选择 A 列
- 数据....删除重复项
- 扩大选择范围
- 仅选择 A 列以查找重复项
代码
ActiveSheet.Range("$A$1:$A$3000").EntireRow.RemoveDuplicates 列:=1,标题:=xlNo
关于excel - 加快搜索和删除宏的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8722250/