如何匹配两列表日期并计算NG rate×Weight结果至Approved列?
解决方案:匹配日期并计算Approved列值
先排查VLOOKUP失败的常见原因
- 未使用精确匹配:VLOOKUP第四个参数默认是
TRUE(近似匹配),必须设为FALSE才能准确匹配唯一日期 - 查找区域结构错误:VLOOKUP要求查找值(日期)位于数据区域的第一列
- 日期格式不统一:两列表的日期一个是文本型、一个是数值型,导致匹配失败
方法1:INDEX + MATCH(兼容所有Excel版本)
假设List1的结构:A列=Date,B列=NG rate,C列=Weight;List2的A列=Date,需在D列填充Approved值。
在List2的D2单元格输入公式,下拉填充:
=IFERROR(INDEX(List1!$B:$B,MATCH(List2!$A2,List1!$A:$A,0))*INDEX(List1!$C:$C,MATCH(List2!$A2,List1!$A:$A,0)),"无匹配日期")
MATCH(List2!$A2,List1!$A:$A,0):找到List1中与当前日期完全匹配的行号INDEX:根据行号分别取出对应的NG rate和Weight,相乘得到结果IFERROR:避免无匹配时出现#N/A错误,返回自定义提示文本
方法2:XLOOKUP(适用于Excel 365/2021及以上版本)
公式更简洁,支持直接匹配多列数据:
=IFERROR(PRODUCT(XLOOKUP(List2!$A2,List1!$A:$A,List1!$B:$C)),"无匹配日期")
XLOOKUP:根据日期一次性返回对应的NG rate和WeightPRODUCT:计算两个值的乘积- 同样用
IFERROR处理无匹配的情况
方法3:修正VLOOKUP公式(如果坚持使用)
调整参数确保精确匹配,同时正确指定返回列:
=IFERROR(VLOOKUP(List2!$A2,List1!$A:$C,2,FALSE)*VLOOKUP(List2!$A2,List1!$A:$C,3,FALSE),"无匹配日期")
- 第三个参数
2对应List1中NG rate所在的列(A列为第1列,B列为第2列),3对应Weight所在列 - 第四个参数
FALSE强制精确匹配 - 若日期格式不统一,可先将List2的日期转换为数值型:
=VLOOKUP(VALUE(List2!$A2),List1!$A:$C,2,FALSE)
内容的提问来源于stack exchange,提问作者Rafael
相关产品推荐
相关产品推荐

