目录
vlookup踩坑指南
vlookup一般用法
聊一聊最近踩到的坑,先给出结论当期望查询列位于数据匹配列之前时使用vlookup无法查询到结果。原因是因为 VLOOKUP
只能从左到右查找,即只能查找位于你希望检索数据的列之后的值。
举例:
A | B | C | D | |
1 | 君主 | 国 | 年龄 | 属地 |
2 | 曹操 | 魏国 | 50 | 邺 |
3 | 刘备 | 蜀国 | 46 | 汉中 |
4 | 孙权 | 吴国 | 35 | 吴 |
5 | 吕布 | 群雄 | 45 | 小沛 |
6 | 董卓 | 群雄 | 61 | 洛阳 |
查询列表为:
G | H | |
1 | 君主 | 国 |
2 | 吕布 | |
3 | 曹操 | |
4 | 刘备 | |
5 | 孙权 | |
6 | 董卓 |
此时G列也就是君主列是数据匹配列,H列国是期望查询列。在原查询表中期望查询列位于数据匹配列的右侧根据vlookup从左向右查询的原则,所以这个时候使用vlookup函数不会出任何问题。
=VLOOKUP(G2,$A$1:$D$6,2,0)
G2就是我们要查找的值吕布,查找范围在A1:D6之间,前后两个$符号即锁行锁列,期望查找第2列B列下的值,0代表精确匹配。
下面将展示一个使用vlookup失败的场景
查询列表为:
G | H | |
1 | 属地 | 君主 |
2 | 汉中 | |
3 | 小沛 | |
4 | 洛阳 | |
5 | 邺 | |
6 | 吴 |
此时G列也就是属地是数据匹配列,H列君主是期望查询列。在原查询表中期望查询列位于数据匹配列的左侧根据vlookup从左向右查询的原则,属地列从左往右的方向无法匹配到君主列。此时vlookup会匹配不到任何结果,即使函数参数是完全正确的。
=VLOOKUP(G2,$A$1:$D$6,1,0)
最终结果:
XLOOKUP才是真正的王者级函数
xlookup函数用法
这里面有6个参数,其中前3个为必填项。分别为查找值、查找数组、返回数组。后面3个参数可选,匹配模式默认就是精确匹配。
继续以之前的案例举例
G | H | |
1 | 属地 | 君主 |
2 | 汉中 | |
3 | 小沛 | |
4 | 洛阳 | |
5 | 邺 | |
6 | 吴 |
=XLOOKUP(G2,$D$1:$D$6,$A$1:$A$6)
查找值为G2对应的是汉中,查找的数组在原数据表中在D列也就是D1:D6,两个$符把行跟列全部锁定,不会随表的拖动导致行列发生动态变化。返回数组也就是期望拿到值君主列在A列,即A1:A6,同样锁定行列。后面未找到值顾名思义没找到结果你可以自定义用一个默认值,匹配模式默认精确匹配,搜索模式一般不用。
完美解决。不过该函数有版本要求,尽量用新版的excle和wps