0
点赞
收藏
分享

微信扫一扫

VLOOKUP的神秘搭档CHOOSE函数!

大家好,今天我们来继续讲讲Excel“逆向查找”的问题。


由于VLOOKUP函数要求我们被查询值必须位于查询区域的首列,因此在常规情况下,VLOOKUP函数只能实现从左往右方向上的查找;如果被查询值不在查询区域的首列,可以通过手动或者数组运算的方式,强制调换查询区域列的位置,再配合VLOOKUP函数实现最终的逆向查找操作。


如下图所示

A1:B8为省份与地区对照表,A列为省份,B列为地区。即A列位于第1列,B列位于第2列,也就是我们经常说的查询区域。我们想要根据D列的“地区”作为被查询值,在查询区域中查询第1列的“省份”信息并显示在E列。这就是典型的自右向左逆向查找问题


VLOOKUP的神秘搭档CHOOSE函数!_数据


解决这个问题的重点是要了解一个Excel被冷落且不常用的函数CHOOSE函数CHOOSE函数的作用主要是用于根据索引值从一组数据中返回相应位置的数值


CHOOSE函数的基本结构:

=CHOOSE(索引值,参数1,[参数2],…[参数254])


索引值是介于1到254之间的数字或数组,后面的参数可以是数字、文本、单元格引用等。比如:=CHOOSE(3,B1,B2,B3),返回第三个参数B3。很容易理解。如果感觉抽象的话,我们继续看下面的步骤实例。


我们在E2单元格输入函数公式

=CHOOSE({1,2},$B$2:$B$8,$A$2:$A$8)


CHOOSE函数的第1参数,是一个常量数组{1,2},第2参数是B2:B8区域,第3参数是A2:A8区域。第1参数之所以用常量数组{1,2}表示,就是可以先返回第1个区域,即B2:B8区域的值,再返回第2个区域,即A2:A8区域的值,从而重新构建查询区域两列数据的位置。实质就是实现了两列位置的互换。构造出了B列地区数据在前,A列省份数据在后的两列多行的内存数组,内存数组溢出效果如下图所示:


VLOOKUP的神秘搭档CHOOSE函数!_Excel_02


我们再加深一下理解,如果我们将CHOOSE函数的第1参数{1,2}换成{2,1}的话:

=CHOOSE({2,1},$B$2:$B$8,$A$2:$A$8)


想必大家也能理解其变化了:可以先返回第2个区域,即A2:A8区域的值,再返回第1个区域,即B2:B8区的值,从而重新构建查询区域两列数据的位置,数组溢出效果如下图所示:


VLOOKUP的神秘搭档CHOOSE函数!_数据_03


最后我们只需要嵌套VLOOKUP函数就可以了,用CHOOSE函数作为VLOOKUP函数的第2参数,即查询区域。

=VLOOKUP(D2,CHOOSE({1,2},$B$2:$B$8,$A$2:$A$8),2,0)


CHOOSE函数返回的内存数组,符合VLOOKUP函数要求被查询值必须处于查询区域首列的特征。VLOOKUP函数以D2地区值作为被查询值,在内存数组中查询并返回第2列所对应的省份信息,从而实现逆向查找的目的。


VLOOKUP的神秘搭档CHOOSE函数!_Excel_04

举报

相关推荐

0 条评论