一张表有工号没姓名,另一张表有工号有姓名。要按工号把姓名补进来,手动找 300 行不现实。VLOOKUP 解决的正是这类”按某个值去另一张表取数据”的问题。
四个参数,一句话记住
=VLOOKUP(找什么, 去哪找, 返回第几列, 精确还是近似)
- 找什么:要查的值,比如工号所在单元格;
- 去哪找:另一张表的查找区域,第一列必须是查找值所在列;
- 返回第几列:区域里从第一列数起,要取的内容在第几列;
- 精确还是近似:写 0 或 FALSE 表示精确匹配,日常几乎都用这个。
一个实际例子
假设员工表在 Sheet2,A 列工号、B 列姓名、C 列部门。当前表 A2 是工号,要取姓名:
=VLOOKUP(A2, Sheet2!A:C, 2, 0)
要取部门就把第三个参数改成 3。整个过程不需要记列名,只需要数清楚目标内容在区域里是第几列。
三个常见问题
返回 #N/A:找不到这个值。三种可能——查找值两边格式不一致(文本 vs 数字)、查找值前后有空格、目标表里确实没有这条记录。用 TRIM 去空格、用文本函数统一格式,先排除前两种。
结果全错位:多半是查找区域没有锁首列,或者用了近似匹配(第四个参数留空)。把区域改成绝对引用($A:$C),第四个参数写 0。
返回 0 或空白:目标单元格本身是空的。这不是公式错误,用 IFERROR 包一层显示为空更美观:=IFERROR(VLOOKUP(...), ““)。
什么时候不该用 VLOOKUP
要找的值在目标区域第一列左边(需要向左查),VLOOKUP 做不到,此时用 XLOOKUP 或 INDEX+MATCH 更合适。数据量特别大(几万行以上)时,VLOOKUP 的整体计算较慢,可以考虑把结果转成数值再计算。
WPS 表格里公式输入有参数提示,输入函数名后会显示每个参数的含义,不确定第几个参数时看提示比自己猜快。写完公式还可以用「公式求值」逐段看计算过程。
常见疑问
查找值格式不一致怎么统一? 数字转文本用分列或 TEXT 函数处理,文本转数字用 VALUE 或乘以 1,两边统一后再查。
能查出多个匹配结果吗? VLOOKUP 只返回第一个匹配项。需要全部结果时用筛选或 Power Query 类工具更合适。
小结
VLOOKUP 的难点不在语法,在参数顺序和格式一致性。四个参数记清楚、精确匹配写 0、区域锁住首列,三个报错基本都能自查出来。