Excel中如何用VLOOKUP获取匹配发票号的首个非空金额?
解决重复发票号匹配唯一非空金额的问题
针对你遇到的重复发票号对应唯一非空金额的匹配问题,以下几种方法可直接绕过空值返回目标金额:
方法1:SUMIF函数(全版本Excel兼容)
利用每个发票号仅对应一个有效金额的特性,SUMIF会自动忽略空值并返回该唯一值。假设原数据工作表名为数据源,发票号列是数据源!A:A,金额列是数据源!B:B,当前工作表中待匹配的发票号在单元格A2,公式如下:
=SUMIF(数据源!$A:$A, A2, 数据源!$B:$B)
方法2:XLOOKUP函数(Excel 365/2021及以上版本)
反向查找法
如果非空金额通常在重复发票号的最后一行,可使用反向查找直接定位:
=XLOOKUP(A2, 数据源!$A:$A, 数据源!$B:$B, "", 0, 2)
最后一个参数2表示从区域末尾向前查找,优先返回最后一个匹配结果(即非空金额行)。
过滤空值法
如果不确定非空金额的位置,用数组条件筛选出匹配且金额非空的行:
=XLOOKUP(TRUE, (数据源!$A:$A=A2)*(数据源!$B:$B<>""), 数据源!$B:$B)
方法3:INDEX+AGGREGATE组合(兼容旧版Excel)
AGGREGATE可忽略错误值,精准定位到匹配且金额非空的行号,再用INDEX提取金额:
=INDEX(数据源!$B:$B, AGGREGATE(15, 6, ROW(数据源!$A:$A)/(数据源!$A:$A=A2)/(数据源!$B:$B<>""), 1))
AGGREGATE(15,6,...):15对应SMALL函数,6表示忽略错误值ROW(...)部分:仅保留发票号匹配且金额非空的行号,取最小(第一个)行号对应的金额
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

