VLOOKUP函数31种用法总结,涵盖不同场景和技巧,所有公式均基于VLOOKUP实现:
精确匹配=VLOOKUP(A2, B:C, 2, FALSE)查找A2在B列对应的C列值,精确匹配。
注:基本用法,但实际工作中常用0替代Flase
模糊匹配(区间查找)=VLOOKUP(A2, D:E, 2, TRUE)查找A2在D列对应的E列值,适用于数值区间(如成绩评级)。
注:D列值必须从升序排列,True常省略
跨工作表查找=VLOOKUP(A2, Sheet2!A:B, 2, FALSE)跨工作表查询Sheet2的数据。
注:配合indirect函数还可以实现动态查找
跨工作簿查找=VLOOKUP(A2, [Book2.xlsx]Sheet1!A:B, 2, FALSE)引用其他工作簿数据(需打开目标文件)。
注:配合indirect函数还可以实现动态查找
二、高级技巧反向查找(左→右)=VLOOKUP(A2, CHOOSE({1,2}, C:C, B:B), 2, FALSE)用CHOOSE交换列顺序,实现从右向左查。
注:CHOOSE({1,2}等同于IF({1,0}
多条件查找=VLOOKUP(A2&B2, IF({1,0}, C:C&D:D, E:E), 2, FALSE)按Ctrl+Shift+Enter输入数组公式,合并条件列。
注:利用IF{1,0}左右换位,标准答案
返回多列数据=VLOOKUP($A2, $B:$E, COLUMN(C1), FALSE)用COLUMN函数动态调整返回列,向右拖动填充。
注:查询表和原表列顺序要完全一致
通配符查找=VLOOKUP("*"&A2&"*", B:C, 2, FALSE)使用*匹配包含A2的文本(如模糊搜索)。
注:也可以用?表示单个字符
查找第N个匹配项=VLOOKUP(A2, IF(COUNTIF(B$1:B1, A2)=0, B:C, ""), 2, FALSE)结合辅助列跳过已查找到的值。
注:公式错误
正确答案是在最前添加辅助列,用Countif生成内容+序号,再根据这一列查找
辅助列公式:=B1&COUNTIF(B$1:A1,B1)
查找公式:Vlookup(E1&N,A:C,2,0)
三、动态引用动态列索引(MATCH组合)=VLOOKUP(A2, B:E, MATCH("目标列", B1:E1, 0), FALSE)用MATCH定位列号,适应列顺序变化。
注:根据查找表格的标签确定要查找的列数
动态表范围(INDIRECT组合)=VLOOKUP(A2, INDIRECT("Sheet"&B2&"!A:C"), 3, FALSE)根据B2的值动态切换工作表。
注:最常用的是INDIRECT(表名所在单元格&"!A:C")
动态偏移范围(OFFSET组合)
=VLOOKUP(A2, OFFSET(B1,0,0,COUNTA(B:B),3), 3, FALSE)
自动扩展数据范围,避免固定区域。
注:Offset第4个参数是总行数
四、错误处理屏蔽错误值(IFERROR组合)=IFERROR(VLOOKUP(A2, B:C, 2, FALSE), "未找到")找不到时显示“未找到”而非#N/A。
注:标准答案
强制转换为数值查找=VLOOKUP(A2+0, B:C, 2, FALSE)当查找值为文本型数字时,用+0转为数值。
注:利用四则运算把文型转换为数值型
强制转换为文本查找=VLOOKUP(TEXT(A2, "@"), B:C, 2, FALSE)将数值转为文本格式匹配。
注:用A2&""更简单
五、复杂场景合并单元格查找=VLOOKUP(LOOKUP("座", A$1:A2), D:E, 2, FALSE)填充合并单元格后向上查找最后一个非空值。
注:用lookup查找上面的最后一个值
区分大小写查找=VLOOKUP(TRUE, IF(EXACT(B:B, A2), C:C, ""), 1, FALSE)按Ctrl+Shift+Enter输入数组公式,区分大小写。
注:公式是错的,-这个公式兰色写过:
=VLOOKUP(TRUE,IF({1,0},EXACT(A$2:A7,E2),B$2:B7),2,0)
返回最后一个匹配项=VLOOKUP(A2, SORT(B:C, 1, -1), 2, FALSE)降序排序后查找第一个匹配项(等效最后一个)。
注:这个创意不错,但公式是错的,正确的应为
=VLOOKUP(F2, SORTBY(B2:C7,100-ROW(1:6)), 2, FALSE)
多表联合查询=IFERROR(VLOOKUP(A2, Sheet1!B:C, 2, FALSE), VLOOKUP(A2, Sheet2!B:C, 2, FALSE))优先查Sheet1,找不到再查Sheet2。
注:这个公式没问题
二维表矩阵查找=VLOOKUP(A2, B:D, MATCH(B1, B1:D1, 0), FALSE)动态匹配行和列的交点值。
注:和10重复了
六、数据操作提取特定字符后的值=VLOOKUP("*-"&A2, B:C, 2, FALSE)查找包含“-A2”结尾的文本。
注:通配符的一个细节应用,也算过关
条件求和=SUM(VLOOKUP(A2, B:D, {2,3}, FALSE))返回多列数值并求和(按Ctrl+Shift+Enter)。
注:第3个参数为数组时,配合Sum可以多列求和
条件计数=COUNTIF(VLOOKUP(A2, B:C, 2, FALSE), ">100")查找结果后统计大于100的数量。
注:Countif第一个参数必须是单元格引用,无法使用处理后的值,可以用Countifs多个条件完成该类型计算。
数据分级(如工资评级)=VLOOKUP(A2, {0,"低";5000,"中";10000,"高"}, 2, TRUE)直接构建常量数组进行评级。
注:第4个参数省略或为1和true时,可以完成数据区间查找。
七、扩展应用批量查找(数组公式)=VLOOKUP(A2:A10, B:C, 2, FALSE)按Ctrl+Shift+Enter输入,批量返回结果数组。
注:公式没问题,反倒说明文字错了,因为老版中第一个参数不能使用区域,而新版中可能,但不需要使用数组形式输入,直接输入即可。
查找并替换特定值=IF(VLOOKUP(A2, B:C, 2, FALSE)="旧值", "新值", VLOOKUP(...))嵌套IF替换指定结果。
注:公式没问题,也算一个细节应用吧。
动态下拉菜单联动数据验证中引用VLOOKUP结果生成二级下拉菜单。
注:二级下拉是用indirect生成的,错!
查找并拼接文本=VLOOKUP(A2, B:C, 2, FALSE) & "-" & VLOOKUP(A2, B:D, 3, FALSE)合并两列查找结果。
注:公式没问题,但这样算用法之一,太应付了吧
八、特殊技巧跳过隐藏行查找=VLOOKUP(A2, SUBTOTAL(103, OFFSET(B1, ROW(B:B)-1,)) * C:C, 1, FALSE)仅查找可见行数据(需复杂公式)。
注:公式错的,兰色以前写过
=VLOOKUP(E19,IF(SUBTOTAL(103,OFFSET(A1,ROW(1:13),0)),B2:C14),2,0)
根据日期查找最近记录=VLOOKUP(MAX(IF(B:B<=TODAY(), B:B)), B:C, 2, TRUE)按Ctrl+Shift+Enter输入,查找不超过当前日期的最近值。
注:公式没问题,勉强算一个用法吧
结合TEXT函数格式化查找=VLOOKUP(TEXT(A2, "yyyy-mm-dd"), B:C, 2, FALSE)强制日期格式一致后查找。
注:公式没问题,很小众的一个应用
注意事项按Ctrl+Shift+Enter输入的公式为数组公式。
使用绝对引用(如$B$2:$C$100)避免拖动公式时范围变化。
模糊匹配(TRUE)要求数据升序排列。
吓得想取关