EDC*_*EDC -3 excel performance vba loops
我想突出显示 Excel VBA 中的重复行。假设我有以下示例表,其中包含 A、B、C 和 D 列用于测试:
A B C D (Strings)
1 1 1 dsf
2 3 5 dgdgdgdg
1 1 1 dsf
2 2 2 xxx
6 3 4 adsdadad
2 2 2 xxx
Run Code Online (Sandbox Code Playgroud)
重复的行应该以任何颜色突出显示,例如灰色。我理想地寻找快速执行的代码,因为它将用于相当大的表。请注意,有一些解决方案可用于突出显示重复的单元格(但不突出显示重复的行)。我不知道如何识别行是否重复,同时如何快速做到这一点,即没有嵌套循环。解决方案应该是 VBA(而不是 Excel)。
实现这一目标的最佳/最快方法是什么?
使用以下 sumproduct 公式(或 countifs)添加条件格式
=SUMPRODUCT(($A$1:$A$6&$B$1:$B$6&$C$1:$C$6=$A1&$B1&$C1)*1)>1

解释:
SUMPRODUCT可以方便地处理在检查条件之前需要操作的范围。在本例中,我连接整个范围内的 A、B 和 C 列,并将其与当前行的连接进行比较。SUM然后,我通过乘以 1 和条件为 true 的行的总和部分,将 TRUE/FALSE 数组转换为 1/0 数组SUMPRODUCT,从而得到重复的行(所有出现的情况)。如果您的范围较小,则使用公式评估您可以清楚地看到其工作原理。
这是一个快速修复,但性能并不理想,我经常使用它来检测重复项或生成序列号。
根据排序建议,需要添加键列,放入自动过滤器并按键排序,然后对键列执行条件:
