图 7.99 中,C 列是生产车间今日正在生产的所有型体名称,部分型体在多台机上生产,因此型体名称存在重复值。现要求计算今日同时在生产的型体名称有多少个。
图7.99 生产表
解题步骤
计算一列中的数据个数(忽略重复值)有很多方法,可以使用删除重复项工具去除重复值,或使用高级筛选提取唯一值,然后计算去重后的唯一值数据个数,也可以使用公式计算一列中的不重复数据个数。使用公式达成需求的优点在于数据源变化时计算结果也相应地变化,其他方法则必须在数据源更新后重新操作一遍。
计算唯一值数据个数的公式如下,效果见图7.100。
图7.100 使用公式计算唯一值数量
知识扩展
1.COUNTIF函数的功能是计算符合条件的单元格数量,第一参数是计算目标,第二参数是条件。当第二参数包含多个条件时函数的计算结果也会有多个。
在本例中,COUNTIF 函数的第二参数是 C2:C13,包含 12 个值,因此表达式“COUNTIF(C2:C13,C2:C13)”会产生12个计算结果,对应12个字符串的出现次数。
图 7.101 中,A1:C12 包含 12 个产品的名称,选择 B1:B12 后输入公 式“=COUNTIF(A1:A12,A1:A12)”并按组合键<Ctrl+Shift+Enter>结束,公式结果包含2、1、2、1、2、1、2、1、1、2、1、2等12个结果,其中1代表此单元格的值仅在A1:A12区域中出现一次,2则代表出现过两次,如A1和A7都有压线钳,因此B1和B7的值为2。
图7.101 统计每个单元格的值的出现次数
2.“COUNTIF(C2:C13,C2:C13))”用于计 算每个单 元格值的 出现次数,而“=SUMPRODUCT(1/COUNTIF(C2:C13,C2:C13))”则用于计算C2:C13区域的唯一值数量。某个数据的出现次数是几,“COUNTIF(C2:C13,C2:C13))”的计算结果中就会有几个几。例如,某单元格的值出现了3次,那么“COUNTIF(C2:C13,C2:C13))”的计算结果中就会有3个3,再如,某单元格的值出现了5次,那么“COUNTIF(C2:C13,C2:C13))”的计算结果中就会有5个5……基于此规律,将它的倒数求和,得到的结果就刚好是不重复值的数量。
举一个简单的例子,A列有1个1、2个2、4个4,在B1中输入公式“=1/a1”从而计算其倒数(见图7.102),将公式向下填充后可以得到1个一分之一、2个二分之一和4个四分之一,使用SUM函数将它们求和后的结果为3,而A列的不重复数据个数也刚好等于3,这印证了求倒数后再汇总可以得到不重复数据个数的思路是正确的。
图7.102 对倒数求和
3.SUMPRODUCT 函数在本例中用于替换 SUM 函数,本例使用 SUM 和 SUMPRODUCT函数求和都能得到正确结果,但是使用 SUM 时必须按组合键<Ctrl+Shift+Enter>,而使用SUMPRODUCT不需要按此三键,相比而言更方便。