如何结合条件语句与VLOOKUP按序列提取SKU对应的UPC及日期?
解决方案:多条件匹配提取重复SKU的对应数据
问题分析
你之前的公式核心问题是逻辑不成立:IF([file name.xlsx]filename!$D:$D=1, VLOOKUP(...)) 试图用整列条件判断配合VLOOKUP,但VLOOKUP无法同时关联「SKU匹配」和「D列序号=N」两个条件,只会返回第一个匹配SKU的结果,自然达不到按序号提取的要求。
正确公式写法
假设:
- 源数据存于
[file name.xlsx]filename工作表:列A=SKU,列B=UPC,列C=最后使用日期,列D=SKU出现序号(1、2、3...) - 目标表中,当前行匹配的SKU在
G2单元格,要提取序号=1的UPC到H2(UPC1)、序号=1的日期到I2(LastUse1)
方法1:INDEX+MATCH(兼容所有Excel版本)
提取UPC1(序号=1):
=INDEX([file name.xlsx]filename!$B:$B, MATCH(1, ([file name.xlsx]filename!$A:$A=$G2)*([file name.xlsx]filename!$D:$D=1), 0))
提取LastUse1(序号=1):
=INDEX([file name.xlsx]filename!$C:$C, MATCH(1, ([file name.xlsx]filename!$A:$A=$G2)*([file name.xlsx]filename!$D:$D=1), 0))
注意:Excel 2019及更早版本需按
Ctrl+Shift+Enter以数组公式执行;365/2021版本直接回车即可。如需提取序号=2的UPC(UPC2),仅需把公式中的=1改为=2。
方法2:XLOOKUP(仅Excel 365/2021及以后版本)
XLOOKUP支持多条件匹配,写法更简洁,还可自定义无匹配时的返回值:
提取UPC1:
=XLOOKUP(1, ([file name.xlsx]filename!$A:$A=$G2)*([file name.xlsx]filename!$D:$D=1), [file name.xlsx]filename!$B:$B, "无数据")
提取LastUse1:
=XLOOKUP(1, ([file name.xlsx]filename!$A:$A=$G2)*([file name.xlsx]filename!$D:$D=1), [file name.xlsx]filename!$C:$C, "无数据")
优化建议
- 避免整列引用(如
$A:$A),替换为实际数据范围(如$A$2:$A$1000),可大幅提升公式计算速度 - 确认D列序号是用
COUNTIF($A$2:$A2, $A2)这类公式生成的连续分组编号,避免序号混乱导致匹配错误
内容的提问来源于stack exchange,提问作者Ben Rush
相关产品推荐
相关产品推荐

