Excel中基于ACTUAL HRS和DAILY PRODUCTION表生成新表,函数异常求助
解决Excel多表匹配生成考勤与产出报表问题
核心逻辑说明
要实现需求,需完成两个关键匹配:
- 匹配指定User ID在
ACTUAL HRS表中对应日期的工时状态(空值代表缺勤) - 匹配同一User ID在
DAILY PRODUCTION表中对应日期的leads数量 - 根据工时状态返回"Absent"或对应leads数
推荐解决方案:INDEX+MATCH组合(更可靠)
假设第三张表名为FINAL REPORT,A列存放指定的User ID,C1-E1与另外两张表一致为11月1日-4日的日期表头。在FINAL REPORT的C2单元格输入以下公式,然后下拉、右拉填充整个数据区域:
=IF(INDEX('ACTUAL HRS'!$C:$E,MATCH($A2,'ACTUAL HRS'!$A:$A,0),MATCH(C$1,'ACTUAL HRS'!$C$1:$E$1,0))="","Absent",INDEX('DAILY PRODUCTION'!$C:$E,MATCH($A2,'DAILY PRODUCTION'!$A:$A,0),MATCH(C$1,'DAILY PRODUCTION'!$C$1:$E$1,0)))
公式拆解
MATCH($A2,'ACTUAL HRS'!$A:$A,0):精准定位当前User ID在ACTUAL HRS表A列的行号MATCH(C$1,'ACTUAL HRS'!$C$1:$E$1,0):精准定位当前日期在ACTUAL HRS表表头的列号INDEX('ACTUAL HRS'!$C:$E,行号,列号):获取对应User ID+日期的工时单元格值,判断是否为空- 若为空返回"Absent",否则用相同逻辑从
DAILY PRODUCTION表提取对应leads数
关键注意事项
- 单元格引用锁定:
$A2锁定列(下拉时User ID列不变),C$1锁定行(右拉时日期表头行不变),$A:$A/$C:$E锁定整个列范围,避免填充时引用偏移 - 处理不存在的User ID:如果指定的User ID在某张表中不存在,会返回
#N/A,可以嵌套IFERROR优化:=IFERROR(IF(INDEX('ACTUAL HRS'!$C:$E,MATCH($A2,'ACTUAL HRS'!$A:$A,0),MATCH(C$1,'ACTUAL HRS'!$C$1:$E$1,0))="","Absent",INDEX('DAILY PRODUCTION'!$C:$E,MATCH($A2,'DAILY PRODUCTION'!$A:$A,0),MATCH(C$1,'DAILY PRODUCTION'!$C$1:$E$1,0))),"User ID Not Found")
原VLOOKUP方案的常见错误修正
如果坚持用VLOOKUP,需确保返回列数是动态计算的(而非固定数值),否则右拉时会匹配错误。正确写法如下:
=IF(VLOOKUP($A2,'ACTUAL HRS'!$A:$E,MATCH(C$1,'ACTUAL HRS'!$A$1:$E$1,0),0)="","Absent",VLOOKUP($A2,'DAILY PRODUCTION'!$A:$E,MATCH(C$1,'DAILY PRODUCTION'!$A$1:$E$1,0),0))
- 常见错误:之前可能直接写死VLOOKUP的第三个参数(比如
3),右拉时无法自动匹配后续日期列,导致匹配错位
内容的提问来源于stack exchange,提问作者alexisgerminal2
相关产品推荐
相关产品推荐

