
统计唯一不重复值,是 Excel 数据处理中的高频需求。常见场景包括:计算不重复数据个数、提取不重复内容、剔除重复记录、识别重复项等。本文将重点讲解如何通过公式精准统计某一区域内不重复值的个数。
问题提出
如何准确计算指定数据区域中不同值的总数?
逻辑解析
- 利用 COUNTIF 函数,对“生源地”列中每个单元格的值,在整列范围内进行频次统计,并以数组形式输出各位置对应的出现次数。
<code>公式结构:=COUNTIF(生源地范围, 生源地范围)</code>
- 若某一生源地在列中重复出现 n 次,则该值在 COUNTIF 返回的数组中会占据 n 个位置,且每个位置的数值均为 n。
例如原始数据为:A、B、C、C、A、A,则 COUNTIF 返回结果为 {3, 1, 2, 2, 3, 3} —— 其中 A 出现 3 次,对应三个 3;C 出现 2 次,对应两个 2;B 出现 1 次,对应一个 1。
- 不论某个值出现多少次,它仅应被计为 1 个唯一项。因此,将上述数组中每个元素取倒数(即 1/n),再求和,即可得到唯一值总数。
如上例:{3, 1, 2, 2, 3, 3} → 1/3 + 1/1 + 1/2 + 1/2 + 1/3 + 1/3 = 3。
操作步骤
- 输入 SUMPRODUCT 函数起始部分:
<code>=SUMPRODUCT(</code>
- 嵌入倒数逻辑,调用 COUNTIF 构建分子为 1 的分式数组:
<code>=SUMPRODUCT(1/COUNTIF(</code>
- 补全 COUNTIF 参数:统计区域设为“生源地”列(如 B2:B19),条件区域也指向同一范围(注意避免整列引用导致性能下降或错误),最终公式如下:
<code>=SUMPRODUCT(1/COUNTIF(B2:B19,B2:B19))</code>
常见异常及应对
当所选区域包含空单元格时,公式易返回 #DIV/0! 错误。原因在于 COUNTIF 对空单元格的双重解释机制:
- 在「统计区域」参数中,空单元格被视为文本型空字符串
""; - 在「条件区域」参数中,空单元格则被视作数值 0;
因此,当条件区域引用空单元格时,COUNTIF 实际执行的是COUNTIF(...,0),若列中无数字 0,则返回 0,进而导致1/0错误。
解决方法:对条件区域统一追加空字符串 &"",使所有空单元格强制转为空文本,与统计区域语义一致。此时空值也被视为一个独立的唯一项参与统计。
修正后公式:
<code>=SUMPRODUCT(1/COUNTIF(B2:B19,B2:B19&""))</code>
归纳说明
或许你会疑惑:“为何要采用 1 除的方式?”这本质上并非 Excel 特有技巧,而是源于数学中的“倒数求和去重法”。Excel 仅借助 COUNTIF 与 SUMPRODUCT 的协同配合,高效实现了这一算法逻辑。建议熟练掌握该思路——“1 除”模式在 Excel 多类复杂统计任务中均有广泛应用,能显著提升公式设计效率与问题解决能力。











