提取多个条件的数据(提取符合条件多行数据)

小编:小丢 更新时间:2022-08-29

要在图为某公司的所示的员工薪资数据记录与上班考勤数据表中提取同时满足多个条件的数据,例如"销售部""打卡时间"晚于"8:30:00"的员工编号

提取多个条件的数据(提取符合条件多行数据)

可在I2单元格中输入以下公式并向下复制填充:

=IF(ROW(1:1)>SUM((C$2:C$102="销售部")*(G$2:G$102-"8:30:00">0)),"",INDEX(A$1:A$102,SMALL(IF((C$2:C$102="销售部")*(G$2:G$102-"8:30:00">0),ROW($2:$102)),ROW(1:1))))


这是一个数组公式,在输入完成时必须同时按下<Ctrl+Shif+Enter>组合键如如所示

提取多个条件的数据(提取符合条件多行数据)

这个公式公式主要区别在于以下方面。

=SUM((C$2:C$102="销售部")*(G$2:G$102-"8:30:00">0))


这部分公式的作用是统计同时满足部门为"销售部"且"打卡时间"晚于"8:30:00"的记录的数目。当要对同时满足多个条件的数据记录进行统计时,可将各个条件的数组公式部分进行逻辑相乘的运算,表示"同时满足"。

提取多个条件的数据(提取符合条件多行数据)

此公式中乘号"*"两侧的部分分别可以得到一个数组运算的结果,左侧是C列中部门为"销售部"的,右侧为D列中时间晚于8点半的。将两部分数组结果进行逻辑相乘,然后用SUM函数求和就可以得到同时满足两个条件的记录个数。

G$2:G$102-"8:30:00">0 的公式部分用于对两个时间进行比较,但不能直接写为G$2:G$102>"8:30:00",因为大于号右侧的时间是文本格式,不能直接与时间数值进行大小的比较,需要通过算术运算后(本例中使用减法运算),可以将此文本数值转换为真正的时间数值。

=IF((C$2:C$102="销售部")*(G$2:G$102-"8:30:00">0),ROW($2:$102))

这部分公式用于获取同时满足两个条件的记录所在行号,满足条件的判断方式与上面所述方式相同。

提取多个条件的数据(提取符合条件多行数据)

通过上面两部分的公式改造,就可以把之前分析的一样的

中用于提取满足单个条件记录的公式改造成为可满足多个条件。公式显示结果如图所示

提取多个条件的数据(提取符合条件多行数据)

在 Excel 中新增的 IFERROR函数也可以用于排错处理,可以将上述公式简化为:

=IFERROR(INDEX(A$1:A$102,SMALL(IF((C$2:C$102="销售部")* (G$2:G$102-"8:30:00">0),ROW($2:$102)),ROW(1:1))),"")

提取多个条件的数据(提取符合条件多行数据)

学会了这些函数吗?当前有的通信可能对这些函数特别陌,没关系

点击一下视频可以掌握办公中的常用函数技巧