你没有贴出你的代码,猜测你慢是因为两个原因:一是没有使用数组,大量的Range或者Cells存取单元格,二是没有使用字典,使用双重循环来检查是否重复。改变就针对这两点进行,如果你已经采取了这两条,那就要看看你代码其它地方是否有不合理的。
只有你贴出代码才可能进一步优化,直接给的代码可能和你的差不多,不一定能解决关键的地方。
按照你的例子,我给出下面的代码,你可以试试看,几十万数据应该一分钟能完成,当然这一分钟不要乱点鼠标,否则位“未响应的”
处理前:
处理后:
代码:
Option Explicit
Sub 宏1()
Dim arr, num, n, i, db
Set db = CreateObject("Scripting.Dictionary")
arr = ActiveSheet.UsedRange '工作表数据存入数组
For i = 1 To UBound(arr)
num = Trim(arr(i, 1))
n = db(num) + 1
db(num) = n
If n > 1 Then arr(i, 1) = Chr(63 + n) & num
Next i
ActiveSheet.UsedRange = arr '数组写入工作表
End Sub
没说清楚啊,麻烦你截图看下数据。