VLOOKUP+MATCH,返回列不按顺序,也能一个公式拖到底



Lv.3 优质创作者
VLOOKUP+MATCH,返回列不按顺序,也能一个公式拖到底
前几天有网友问了我一个查找的问题。
他手上有一张订单表,A列是番号,后面跟着俗称、订单数、订单号、尾数、完成情况这些列。现在想按番号,把订单数和俗称查出来。
按理说不难,番号就在最左边,用VLOOKUP正合适,连反向查找都用不上。
麻烦在哪呢?他查询区想要的顺序是:番号、订单数、俗称。
而原表里,俗称在第2列,订单数在第3列。顺序对不上。
要是老实写,B13写一个VLOOKUP查订单数,C13再写一个查俗称,各写各的,也能出结果。但这样公式就没法统一拖拽了,列一多,得一列一列地改第三参数,改到怀疑人生。
能不能只写一个公式,右拖、下拖都好使?还真可以,让MATCH来帮忙。
第一步:先写VLOOKUP的骨架
在B13输入:
=VLOOKUP(A13,A1:F10,……)
第一参数A13,是要查的番号93668。
第二参数A1:F10,是查找区域。这里建议选中区域后按一下F4,变成绝对引用,后面拖拽才不会乱跑。
第三参数本来该填「返回第几列」,但订单数在第几列,我们不想写死——这就是这次的关键。
第二步:用MATCH算出「第几列」
MATCH的本事,就是告诉你某个值在一行或一列里排第几位。
我们把第三参数换成:
MATCH(B$12,$1:$1,0)
拆开看:
① B$12:就是B12单元格里的「订单数」四个字。注意这里锁定的是行(B$12),往下拖时行号不变;往右拖时,B会变成C,正好对应「俗称」。
② $1:$1:整个第1行,也就是标题行,同样绝对引用。
③ 0:精确匹配。
MATCH在标题行里找到「订单数」,返回3,VLOOKUP就去取第3列。换成「俗称」,MATCH返回2,VLOOKUP就取第2列。
列的位置是算出来的,不是写死的。
第三步:把查找值也锁定一列
公式回车后,先别急着高兴。往右拖一下,你会发现出问题了——A13变成了B13,查的番号跑偏了。
所以还得把A13改成$A13:锁字母,不锁数字。
这样往右拖,永远是A列的番号;往下拖,行号正常跟着走,A13变A14,查下一行。
最终公式
=VLOOKUP($A13,$A$1:$F$10,MATCH(B$12,$1:$1,0),FALSE)
在B13输入这一个公式,往右拖、往下拖,订单数和俗称一次到位。
我用番号93668试了下,返回订单数750、俗称H276,再用Ctrl+F回原表核对,一点没错。
几句题外话
$A13、B$12、$A$1:$F$10,分别用了混合引用和绝对引用,各有各的用途。哪个锁行、哪个锁列,得想清楚再下手。要是您对相对引用、绝对引用、混合引用还有点模糊,建议先回头补一下这一课,很多公式的问题,根子都在引用方式上。
另外MATCH第三参数用0是精确匹配,别省。省了容易出莫名其妙的错。
方法不止这一种,INDEX+MATCH也能实现类似效果。如果您有更好的写法,欢迎留言交流,先谢过各位大佬。
我是墨云轩,热衷分享办公小技巧,边学习,边分享,每天进步一点点!感谢您的阅读!
Lv.1新人创作者
Lv.3 优质创作者
Lv.3 优质创作者
Lv.3 优质创作者