【发布时间】:2021-08-24 06:42:48
【问题描述】:
我的 Excel 工作簿具有一个包含大约 50K 记录的表。我目前正在使用一个公式来计算基于两个标准的不同值,即:ID & Region
通过公式执行此操作会使我的工作簿变得异常缓慢。因此,我想知道您是否知道如何将其转换为高效的 VBA 循环。
.Range("C2").Formula = "=IF(IFERROR(1=SUMPRODUCT(1/COUNTIFS($A$2:A2,A2,$B$2:B2,B2)),0),1,0)"
C 列中的所需结果。VBA 代码必须能够通过用“1”标记 C 列来突出显示唯一值。当遇到重复条目时,代码只能将范围的最后一个条目标记为唯一的“1”(请参阅 ID 3)。
【问题讨论】:
-
结果是否按您显示的那样排序?对于 VBA,我建议将数据读入 VBA 数组;然后使用 Dictionary 对象检查重复项。
-
我突然想到,创建此列可能不是您想要的最终结果。例如,如果您打算将其用作过滤器,以便仅返回最后一个唯一值,则在 VBA 或 Power Query 中都有更有效的方法来完成此操作。
标签: excel vba distinct countif