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

墨云轩
墨云轩 WPS资深用户Lv.3 优质创作者KVPWPS寻令官

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回原表核对,一点没错。

几句题外话

这个公式的灵魂,其实不在VLOOKUP,而在那几个$符号上。

$A13、B$12、$A$1:$F$10,分别用了混合引用和绝对引用,各有各的用途。哪个锁行、哪个锁列,得想清楚再下手。要是您对相对引用、绝对引用、混合引用还有点模糊,建议先回头补一下这一课,很多公式的问题,根子都在引用方式上。

另外MATCH第三参数用0是精确匹配,别省。省了容易出莫名其妙的错。

方法不止这一种,INDEX+MATCH也能实现类似效果。如果您有更好的写法,欢迎留言交流,先谢过各位大佬。

我是墨云轩,热衷分享办公小技巧,边学习,边分享,每天进步一点点!感谢您的阅读!

河北省
浏览 196
收藏
11
分享
11 +1
4
+1
全部评论 4
 
猪宝儿
猪宝儿 Lv.1 新人创作者

Lv.1新人创作者

过来支持一下
   浙江省
举报
0
1
墨云轩
墨云轩WPS资深用户Lv.3 优质创作者KVPWPS寻令官

Lv.3 优质创作者

· 河北省
举报
0
0
 
HC.旋
HC.旋 WPS资深用户Lv.3 优质创作者WPS寻令官KVP

Lv.3 优质创作者

点赞支持
   福建省
举报
0
1
墨云轩
墨云轩WPS资深用户Lv.3 优质创作者KVPWPS寻令官

Lv.3 优质创作者

· 河北省
举报
0
0