今天我们来学习一个关于多条件统计不重复数据个数的场景案例,本身来讲,excel内置了countifs函数专用于多条件计数,但这个函数有一个很大的弊处,就是无法将一个表达式或数组作为条件区域来执行计算,而仅支持一个单元格区域作为引用区域。
所以作者将通过一个较为复杂的组合公式,并通过公式组成部分的逐一解析,来完成公式逻辑和含义的讲解。
首先来看数据源,数据表包含姓名和分数两列,其中姓名列单元格又通过符号“,”分隔了多个名称,现在需要统计分数等于80且不重复的人员数量。

那么从描述来看,这是一个查询、去重和计数的多重需求,我们需要在A列中查询所有分数为80的人员,然后清除其中重复的人员,最后进行去重后符合条件的人员数量。
应对这样的复杂需求,我们要如何来解答?有什么思路呢?
思路如下,由于A列单元格包含多个名称,我们可以将所有人员名称进行分列提取,形成多列单元格文本,然后将多列单元格转换为一列,再对该列进行去重,随后再设置一个条件函数来判断并返回分数为80的特定结果,最后利用计数函数进行个数统计。
下面开始进入公式创建。
1、单元格内指定符合分隔的多项内容执行分列提取
要将所有人员名称提取到单个单元格,重点是如何将单元格内的数据按照指定符号进行分割。
在前面专栏文《Excel表格将单元格内换行数据进行分列提取到多个单元格公式详解》作了详细讲解,这里作者直接上公式:
=TRIM(MID(SUBSTITUTE($A$2:$A$9,",",REPT(" ",100)),COLUMN($A$1:$D$1)*100-99,100))

简单来讲,这个公式是利用替换函数将指定符号“,”替换为大量空格,然后通过mid函数来提取指定位置和指定长度的字符串,最后利用trim函数来清除多余的空格,从而得到所需的多列单元格结果。
从公式结果可见,此时所有人员名称都被分布在单个单元格内,这种情况下,我们再进行数据的合并,可输入公式:
=TRIM(MID(SUBSTITUTE($A$2:$A$9,",",REPT(" ",100)),COLUMN($A$1:$D$1)*100-99,100))&$B$2:$B$9

即通过一个连接符号“&”将多列单元格与分数列的分值进行合并,得到包含人员名称及分数值的组合文本。