小赖同学吧 关注:29贴子:174
  • 0回复贴,共1

问题:一列打卡数据,找出每人每天的上下班时间

只看楼主收藏回复

问题:一列打卡数据,找出每人每天的上下班时间

解:
那就是找出每人每天的最早最晚时间
可以用maxifs minifs的条件最大最少函数来完成
用maxifs(),找B列姓名=当前列,而且,A列时间=当前天
不懂可以不看这段
但是,A列是有时分秒格式,我们要按年月日做比较
我们maxifs函数里,条件区域必须是单元格引用,如果用day()行数取日期后
他就是数组,不能作为参数
那么我们就判断A列的时间是大于当日(0点),而且小于第二天(0点)
=MAXIFS(A:A,B:B,B2,A:A,">="&INT(A2),A:A,"<"&INT(A2)+1)
这样可以得到张2在9-10号的最晚打卡时间
那我们判断当前行的时间是不是等于这个时间,就是知道是不是最晚时间了(目标下班时间)
=A2=MAXIFS(A:A,B:B,B2,A:A,">="&INT(A2),A:A,"<"&INT(A2)+1)
返回true的就是目标数据
然后还要找最早时间,完全同理,max改min就行了
MINIFS(A:A,B:B,B2,A:A,">="&INT(A2),A:A,"<"&INT(A2)+1)
=A2=MINIFS(A:A,B:B,B2,A:A,">="&INT(A2),A:A,"<"&INT(A2)+1)
我们只要是最早或者最晚的都要提取
那就用or(或)函数,只要一个满足我们就提取
=OR(A2=MINIFS(A:A,B:B,B2,A:A,">="&INT(A2),A:A,"<"&INT(A2)+1),A2=MAXIFS(A:A,B:B,B2,A:A,">="&INT(A2),A:A,"<"&INT(A2)+1))
然后往下填充,在筛选true的记录就是目标数据
注意,如果一天只有一个数据的话,那他又是最早又是最晚
如果最早时间有两行一模一样的话,两个都会定义为最早
这些情况还需后续处理


IP属地:广东1楼2024-09-10 17:37回复