多列值匹配命名范围对应值,应使用VLOOKUP还是DGET?
结论
你这个多条件匹配返回对应值的场景,更推荐使用DGET,而非VLOOKUP。
原因说明
VLOOKUP本身只支持匹配查找范围的第一列,如果要实现A、B两列同时匹配的需求,你需要额外新增辅助列把A、B列的值拼接后作为查找主键,或者使用复杂的数组公式才能实现,操作门槛更高也容易出错。DGET天生支持多条件匹配,完全适配你当前的需求:它可以从指定的数据库范围里,返回满足所有给定条件的对应字段值。
具体用法
假设你要在G2单元格输入公式,已设置的A2:C8命名范围为data_range,表头分别为「列A标题」「列B标题」「列C标题」(实际使用替换成你表格里的真实表头即可),公式写法如下:
=DGET(data_range, "列C标题", {"列A标题","列B标题"; E2, F2})
如果你的表格没有设置表头,也可以直接用列号指代返回列,比如要返回第3列(C列)就把第二个参数改成3即可。
注意事项
如果你的A、B列存在重复的组合值,DGET会返回#NUM!错误,遇到这种情况需要先排查原始数据的重复问题。
如果确实需要用VLOOKUP实现,也可以用拼接的方式,示例写法如下(无需辅助列的数组版本,谷歌表格直接支持):
=ARRAYFORMULA(VLOOKUP(E2&F2, {A:A&B:B, C:C}, 2, FALSE))
但这种写法的可读性和可维护性远低于DGET,因此更推荐前者。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

