excel - 加快搜索和删除宏的速度

标签 excel vba

我有一个包含三列的列表。第一列包含名称,其他两列包含数字。该宏获取第一个名称 (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 的解决方案将是最有效的(如果您使用的是旧版本,我可以提供此解决方案)

删除重复项

  1. 手动

    • 选择 A 列
    • 数据....删除重复项
    • 扩大选择范围
    • 仅选择 A 列以查找重复项
  2. 代码

    ActiveSheet.Range("$A$1:$A$3000").EntireRow.RemoveDuplicates 列:=1,标题:=xlNo

before only A after

关于excel - 加快搜索和删除宏的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8722250/

相关文章:

java - 带有尾随逗号的有效 Excel 自定义数字被 DecimalFormat 视为格式错误

vba - Excel中的小数位问题

regex - 正则表达式 - 名称模式

excel - VBA Excel - 无法在重叠选择上使用该命令

Excel 用户表单 - 从剪贴板获取 HTML

javascript - 为 Excel 编写一个新函数

c# - 在 C# 中读取 Excel 文件时如何修复 "Not a legal OleAut date."?

excel - VBA循环工作表: Delete rows if cell doesn't contain

vba - 嵌套 If 语句有问题

excel - 为什么智能表格中没有设置正确的字体颜色?