今日学习目标

  • 记住 VLOOKUP 四个参数各自干什么
  • 会用 FALSE 做精确匹配
  • 理解第一列规则:查找值必须在数据表第一列
  • 会排查 #N/A 和 #REF! 两个高频报错

知识点

1. excel vlookup 怎么用:先看场景

价格表(货号 A 列、单价 B 列)+ 只记货号的流水,要自动带出单价,手抄慢且易错。VLOOKUP 干的就是这个:拿一个值去另一张表第一列里找,返回同行指定列的内容。

2. 四个参数拆开记

=VLOOKUP(lookup_value, table_array, col_index_num, range_lookup)

参数 含义 本例取值
lookup_value 找什么 货号 A2
table_array 在哪找(查找值必须在其第一列) $F$2:$G$8
col_index_num 返回表中第几列 2
range_lookup FALSE 精确,TRUE 近似 FALSE

3. 精确匹配一律 FALSE

日常工作绝大多数是精确匹配:货号对货号、工号对工号,第四参数写 FALSE(或 0)。TRUE 是近似匹配,只用于"分数段定等级"这类区间查找。新手阶段一律 FALSE,能避开一半的坑。

4. 搭档 IFERROR:最后再穿

查不到会显示 #N/A,可外包一层:=IFERROR(VLOOKUP(...),"未录入")。顺序不能反——先排错再加外套,一上来就用 IFERROR 会盖住真问题。

今日代码

价格表在 F2:G8,流水货号在 A 列,B2 写:

excel
=VLOOKUP(A2,$F$2:$G$8,2,FALSE)
A 货号 B 公式结果 过程
P003 12.5 在 F 列找到 P003,取同行第 2 列
P010 #N/A F 列没有 P010

$F$2:$G$8 两个 $ 锁死查找区域:下拉时区域不动、A2 逐行走——第 2 课的绝对引用在这里用上了。

练习题

  1. 用 VLOOKUP 把员工表(工号→姓名)的姓名带进考勤表。
  2. 价格表在 K:L 列,写出从流水表 M2 查单价、区域锁死的公式。
  3. 给第 1 题套上 IFERROR,查不到显示"无此工号"。

习题解答

  1. =VLOOKUP(A2,员工表!$A$2:$B$50,2,FALSE)。跨表区域直接点选。
  2. =VLOOKUP(M2,$K$2:$L$100,2,FALSE)。列号 2 表示返回区域第 2 列,即 L 列。
  3. =IFERROR(VLOOKUP(A2,员工表!$A$2:$B$50,2,FALSE),"无此工号"),原公式整体作为第一参数。

实战场景

背景:仓库月度盘点,盘点表只抄了货号和数量,金额要按系统导出的价目表补齐。N2 写 =VLOOKUP(L2,价目表!$A$2:$C$200,3,FALSE) 带出单价,O2 写 =M2*N2 算金额,两列一起下拉,500 行盘点单三分钟对完——手工核对要一下午。货号前导零不统一时,先统一格式再查,否则整列 #N/A。

常见错误与排查

报错/现象 原因 解决方法
#N/A 值不在;两边格式不一(文本 vs 数字);有隐藏空格 Ctrl+F 到源表验证;分列统一格式;TRIM 去空格
#REF! col_index_num 超出区域列数,如两列区域却写 3 列号改成区域内的数字
整列都是 #N/A 查找值不在区域第一列 调整区域起点,或把查找列挪到最左
下拉后结果错乱 忘了给 table_array 加 $ 选中区域按 F4 锁定

延伸练习

  1. 做"分数段定等级":0-59 不及格、60-79 及格、80-100 优秀,第四参数用 TRUE、对照表第一列升序,体会和 FALSE 的差别。
  2. 连查两列:先带单价再带品名,两个公式只有第 3 参数不同。

学习总结

VLOOKUP 四参数:找什么、在哪找(查找值在第一列)、取第几列、精确用 FALSE。$ 锁区域、A2 留变化;#N/A 先查"在不在、格式同不同",#REF! 查列号;IFERROR 是最后的美化。下一课:数据透视表。


由在线工具箱(www.vba.net)整理制作