不确定其他人是否会遇到这个问题,所以我想我会发布我找到的答案。我喜欢@Ripster 发布的数组解决方案(感谢这一点,它几乎可以工作),但在这种情况下它不会真正工作。我正在处理的是一张带有 1 个 ID 列的大数据表,我想检查其他表以查看该表中是否有重复项(使用 ID 列)。不过不要删除,只是标记,这样我就可以检查出来了。可能有超过 50K 行循环遍历每一行需要很长时间。
所以,我发现我可以做的是将 ID 列从另一张表复制到主表中,并使用条件格式选项以某种颜色标记重复项。 (它会标记两列中的行)然后我可以按颜色过滤列,只显示我用来标记重复项的颜色。如果我以编程方式将一列添加到我正在检查行号的工作表中,我什至可以将该列包含在主工作表中,这样当我过滤颜色时,我可以看到它们在工作表中的哪些行。
之后,我可以录制并调整一个宏,以便为我不太喜欢编程的同事自动执行此操作
非常感谢!
编辑 - 添加代码
选择要比较的列后,这里是用红色文本标记重复项且不填充的代码:
Selection.FormatConditions.AddUniqueValues
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).DupeUnique = xlDuplicate
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
然后,由于两列都标记了重复项,因此您选择您实际要检查的列,然后是要过滤的代码:
`Selection.AutoFilter
ActiveSheet.Range("$C$1:$C$12").AutoFilter Field:=1, Criteria1:=RGB(156, 0 _
, 6), Operator:=xlFilterFontColor`
(在我的测试中,我使用 c 列作为要过滤的列,可以以编程方式使用 cells() 引用或 range(cells(), cells()) 类型的引用
祝大家在未来的事业中一切顺利!再次感谢@ripster