移除考勤记录中匹配IN/OUT打卡值并上移剩余值的数组公式需求
考勤打卡记录合并去重动态数组方案
针对你需要移除连续匹配的OUT/IN打卡记录、自动合并时段并无空白行溢出的需求,可使用以下Excel动态数组公式(无需辅助列,粘贴即可自动适配数据):
=LET( 数据源, A2:INDEX(D:D,COUNTA(A:A)), 员工ID, INDEX(数据源,,1), 考勤日期, INDEX(数据源,,2), 打卡入, INDEX(数据源,,3), 打卡出, INDEX(数据源,,4), 分组标识, SCAN(1, 打卡入, LAMBDA(当前组, 当前入, IF(当前入=INDEX(打卡出, 当前组-1), 当前组, 当前组+1))), 唯一分组, UNIQUE(分组标识), 结果集, HSTACK( XLOOKUP(唯一分组, 分组标识, 员工ID), XLOOKUP(唯一分组, 分组标识, 考勤日期), XLOOKUP(唯一分组, 分组标识, 打卡入), XLOOKUP(唯一分组, 分组标识, 打卡出,,-1) ), VSTACK(A1:D1, 结果集) )
公式说明
- 自动适配数据范围:
A2:INDEX(D:D,COUNTA(A:A))会自动识别A列有内容的最后一行,无需手动修改数据范围 - 分组逻辑:通过
SCAN函数为连续匹配的打卡记录(上一行OUT=下一行IN)分配同一组编号,同一员工的独立打卡时段则分配新组 - 聚合合并:用
XLOOKUP分别提取每组的第一个员工ID、考勤日期、打卡入时间,以及每组最后一个打卡出时间,实现时段合并 - 自动溢出:公式会自动向下向右溢出完整结果,无空白单元格
使用方法
直接将公式粘贴到目标区域的起始单元格(如F1),原始考勤数据粘贴到A1开始的区域即可,无需额外编辑操作。
内容的提问来源于stack exchange,提问作者Ramon
相关产品推荐
相关产品推荐

