使用Excel VBA从多个列中删除重复项

使用Excel VBA从多个列中删除重复项,excel,vba,duplicates,Excel,Vba,Duplicates,我正在从事一个项目,我正在使用VBA从95列中删除重复项。目前我有95行代码可以工作,但宏从40行扩展到95行后运行速度明显减慢。也许这就是它的本质,但我希望更多地了解VBA,看看是否有更简单的方法来解决这个问题。对于95个单独的列,我当前的宏如下所示: Range("g230:g324").RemoveDuplicates Columns:=1, Header:=x1No Range("h230:h324").RemoveDuplicates Columns:=1, Header:=x1No

我正在从事一个项目,我正在使用VBA从95列中删除重复项。目前我有95行代码可以工作,但宏从40行扩展到95行后运行速度明显减慢。也许这就是它的本质,但我希望更多地了解VBA,看看是否有更简单的方法来解决这个问题。对于95个单独的列,我当前的宏如下所示:

Range("g230:g324").RemoveDuplicates Columns:=1, Header:=x1No
Range("h230:h324").RemoveDuplicates Columns:=1, Header:=x1No
Range("i230:i324").RemoveDuplicates Columns:=1, Header:=x1No
Range("j230:j324").RemoveDuplicates Columns:=1, Header:=x1No
它能工作,但速度很慢。有没有办法选择整个单元格范围并让宏删除每行中的重复项? 我在较小的样本大小上尝试了不同的代码来测试它,我收到了1004运行时错误

Dim Dupes As Range: Set Dupes = Sheet1.Range("M3:X30")
Dupes.RemoveDuplicates Columns:=Array(95, 12), Header:=xlYes
我不认为这个定义是错误的,好像我键入了
Dupes=2
它用数字2填充了整个范围

我想让我的宏从这里开始(顶行中的“a”用于解决由于空列而产生的任何错误)

最终的结果是这样的

我怀疑,即使是完整的数组或字典也会比Excel的本机删除重复项快很多,但您可以运行一个循环,将95行代码转换为3行或4行。与…一起使用。。。End With语句将有助于重新引用相同的对象。有关其他“加快速度”的提示,请参阅。感谢您提供该列表,它在速度方面产生了显著的差异。