excel中一个值对应多个值,用某个规则来选择其中一个值 的函数

比如图片中人员编号0013对应多个刷卡时间,我要选择17:00后的数据。但是刷卡时间有3个数据,也有2个,或者4个更多。

可以使用SUMPRODUCT函数和MAX函数组合。
假设在I列输入姓名,J输入刷卡日期,K列求最后一次的刷卡时间。
公式如下:
=SUMPRODUCT(MAX(($C$2:$C$15=I2)*($E$2:$E$15=J2)*$F$2:$F$15))


也可以不用SUMPRODUCT函数:
=MAX(($C$2:$C$15=I2)*($E$2:$E$15=J2)*$F$2:$F$15)
注意:直接使用MAX函数不能直接回车,需要三键组合结束,结束后会有个大括号在公式两端形成一个数组公式。


这个实际就把所有条件相乘,再使用相对应的函数。

追问

我这边要是不把日期相乘的话  可以的,日期加上去的话就显示0:00:00

追答

你的数据都是从第三行开始的,公式也应该从第三行开始,日期不能是文本

时间不能是文本

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-26

提问中没有两点不明确:
1. 是否每个编号一定有17:00以后打卡的,如果某个编号没有17:00以后打卡的记录,如何处理?
2. 某个编号有多个17:00以后打卡的,取哪个数?最晚的还是最早的?或是都要取出来?

下面的的公式按如下方式处理:如果没有17:00以后打卡的,就显示为空;多个17:00以后打卡记录的,取最晚的(要取最早的就把公式中的max改为min),且只模拟了12行数据(到第13行),可根据自己的工作表实际行数修改公式中的最大行数。

先复制A列的编号到空列中,删除重复项,得到不重复编号。

公式1,需要Excel365或2019版本,要用到函数maxifs:

=IF(MAXIFS(E$2:E$13,A$2:A$13,H2)<--"17:00:00","",MAXIFS(E$2:E$13,A$2:A$13,H2))

公式2,早期版本可用:

=IF(MAX(IF(A$2:A$13=H2,E$2:E$13))<--"17:00:00","",MAX(IF(A$2:A$13=H2,E$2:E$13)))

同时按Ctrl+Shift+Enter三个键,完成数组公式的输入

追问

大神,就是日期问题  考勤机导出来的数据基本上包括一个月的时间。我要选择其中某一天的话怎么搞搞?     

而且我按照你的方法试了下 都是空白,不知道哪里不正确   我的是2013

追答

因为导出来的数字是文本数字,所以得不到正确答案。解决办法之一:在某个空白单元格中输入:1
复制该单元格(是复制单元格,不是1这个数字),再选择导出的日间数据,右击,选择“选择性粘贴”,选择“乘”,确定。有可能把时间转换为数字。如果确定后显示为小数,就把格式设置为时间。

第2个回答  2019-06-26
如果判定标准只有这3个,那么做一个相对简单的函数
=if(e4>405,"大号",if(e4>205,"中号","小号"))
如果更改判定标准,那么函数公式需要设置复杂一些的,看你的需要
第3个回答  2019-06-26
编程可能实现处理,需要文档
第4个回答  2019-06-26
提取0013+17:00对应的多个数据?
用index数组
相似回答