Excel多列去重计数调用UNIQUE函数返回#NAME?错误排查
错误原因
- 函数用法错误:
UNIQUE的作用是返回指定区域的去重值列表,本身不支持计数功能。该函数官方语法为UNIQUE(待去重数组, [按列去重逻辑值], [仅保留单次出现项逻辑值]),你在第二参数位置传入单条拼接的字段组合属于无效参数,函数无法正常识别计算。 - 版本兼容问题:若使用Excel 2019及更早的永久授权版本,程序本身未内置
UNIQUE动态数组函数,输入后会直接返回#NAME?错误。
正确实现方案
两种方案的计算结果均匹配需求:即统计每个iso3值对应的(iso3+cnum+country)不重复组合数,例如iso3为RUS时返回结果为2。
Excel 365/2021及以上支持动态数组的版本
在D2单元格输入以下公式,按回车后公式会自动向下溢出填充所有行结果,无需逐行编辑:
=COUNT(UNIQUE(FILTER($B$2:$B$13&"|"&$C$2:$C$13,$A$2:$A$13=A2)))
公式逻辑:
- 通过
FILTER筛选出与当前行iso3值匹配的所有cnum、country字段组合,拼接时加入|作为分隔符,避免不同字段值无间隔拼接产生的内容歧义。 - 用
UNIQUE对筛选出的字段组合去重。 - 用
COUNT统计去重后的组合总数,即为当前iso3对应的不重复组合计数。
Excel 2019及更早版本兼容方案
在D2单元格输入以下公式,按下Ctrl+Shift+Enter三键确认数组公式输入,之后选中D2单元格向下拖拽填充到D13即可:
=SUMPRODUCT(($A$2:$A$13=A2)/COUNTIFS($A$2:$A$13,$A$2:$A$13,$B$2:$B$13,$B$2:$B$13,$C$2:$C$13,$C$2:$C$13))
公式逻辑:
COUNTIFS逐行统计每一组三字段组合在整个数据区域内的出现次数。- 对iso3与当前行一致的行,用1除以该组合的出现次数:同一组重复组合的所有行计算得到的分数相加总和恰好为1,重复项不会被累计计数。
SUMPRODUCT对所有符合条件的计算值求和,最终得到去重后的组合数量。
内容的提问来源于stack exchange,提问作者CanaryTheBird
相关产品推荐
相关产品推荐

