excel中一个值对应多个值,用某个规则来选择其中一个值 的函数
可以使用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函数不能直接回车,需要三键组合结束,结束后会有个大括号在公式两端形成一个数组公式。
这个实际就把所有条件相乘,再使用相对应的函数。
提问中没有两点不明确:
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三个键,完成数组公式的输入
因为导出来的数字是文本数字,所以得不到正确答案。解决办法之一:在某个空白单元格中输入:1
复制该单元格(是复制单元格,不是1这个数字),再选择导出的日间数据,右击,选择“选择性粘贴”,选择“乘”,确定。有可能把时间转换为数字。如果确定后显示为小数,就把格式设置为时间。
=if(e4>405,"大号",if(e4>205,"中号","小号"))
如果更改判定标准,那么函数公式需要设置复杂一些的,看你的需要
用index数组