1职场实例
小伙伴们大家好,今天我们来讲解一个Excel在职场中的经典案例:如何通过函数公式法,判断某列在另外一列中没有出现过的数据,并显示在一个单元格内?下面我们用一个简单的例子说明一下原理。
如下图所示:
A列和C列为两列姓名数据,两列姓名数据可能存在交叉相同的姓名,现在我们想要统计一下,A列姓名在C列姓名中没有出现过的姓名,并且将返回结果显示在一个单元格中,用逗号间隔。
2解题思路
我们用TEXTJOIN函数、COUNTIF函数和FILTER函数运用数组思维解决这个问题。
首先我们在E2单元格输入函数公式:
=COUNTIF(C2:C5,A2:A5)
COUNTIF函数 通常用来统计范围内的符合条件的数值量个数。
函数公式:
=COUNTIF(范围, 条件)
范围(必填):要根据“条件”进行检测的范围。
条件(必填):要应用于“范围”的模式或测试条件。
本例中我们用COUNTIF函数,判断A2:A5区域内的每个单元格内容在区域C2:C5中出现的个数(次数),结果以数组结果输出:
={1;1;0;0}
即“张三”在区域C2:C5中出现过1次;“李四”在区域C2:C5中出现过1次;“赵五”在区域C2:C5中出现过0次;“耿六”在区域C2:C5中出现过0次。
我们对COUNTIF函数做一个逻辑判断:
=COUNTIF(C2:C5,A2:A5)=0
让COUNTIF函数部分强制等于0,即让{1;1;0;0}部分每个元素都等于0,那么不等于0的元素就会返回逻辑值FALSE(假);等于0的元素就会返回逻辑值TRUE(真)。
={FALSE;FALSE;TRUE;TRUE}
这样就转换为了:A列在C列出现过的姓名用逻辑值“FALSE”表示;A列在C列没有出现过的姓名用逻辑值“TRUE”表示。
我们继续完善E2单元格中的函数公式为:
=FILTER(A2:A5,COUNTIF(C2:C5,A2:A5)=0)
FILTER函数 通常用来根据条件筛选数据。可以理解成一个过滤器,留下我们需要的数据,过滤掉不需要的。
函数公式:
=FILTER(range, condition1, [condition2, ...])
range (必填):要筛选的区域或数组
condition1 (必填):筛选的条件 1
condition2 (选填):筛选的条件 2
我们用FILTER函数,将A2:A5区域中,筛选条件为逻辑值TRUE的筛选出来,即将A列在C列没有出现过的姓名"赵五"和"耿六"筛选出来。返回数组:
={"赵五";"耿六"}
最后我们只需要用TEXTJOIN函数将数组结果连接起来就好了:
=TEXTJOIN(",",TRUE,FILTER(A2:A5,COUNTIF(C2:C5,A2:A5)=0))
第1参数:是分隔符号逗号,用双引号括起来;
第2参数:是否跳过空白单元格;
第3参数:表示要连接的文本串。