课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com
利用内存数组作为VLOOKUP查询条件来一次性查询多条EXCEL数据
VLOOKUP是EXCEL中经常要用到的查询函数,通过情况下该函数的第1参数都是1个常数值,能不能用内存数组来作为VLOOKUP的第1参数,实现一次性查询多个值的需求呢?本文通过案例对此提出一个解决办法,欢迎大家讨论。
先举例如下,下图是部分员工工资奖金信息,要求对右边人员一次性查询出相关数据。
这个例子如果用VLOOKUP的标准用法是很容易实现的:
=VLOOKUP(I3,C:F,4,0),再将公式向下填充即可。
本次我们不使用VLOOKUP的标准用法,不向下填充公式,而是使用数组公式来一次性查询出所有的值。
选中J3:J7,输入数组公式:
=VLOOKUP(T(IF({1},I3:I7)),$C$3:$F$10,4,0),按CTRL + SHIFT + ENTER完成输入。
这个公式的核心是IF({1},I3:I7),这个IF函数的结果有3个值,{1}将I3:I7这个区域变成了数组,IF({1},I3:I7)的结果是{'林冲';'吴用';'孙二娘';'宋清';'宋江'},相当于在内存中形成如下一个数组:
然后VLOOKUP再以这个数组中的每一行为查询值在C3:F10的范围中进行查找。
T函数是用来返回IF函数结果中的文本值。
对上面的例子稍加变动,可以用来求值,比如直接计算右边5人的工资总和:
=SUM(VLOOKUP(T(IF({1},I3:I7)),$C$3:$F$10,4,0)),按CTRL + SHIFT + ENTER完成输入。
这个例子就是把原来的VLOOKUP函数外面加了一层SUM函数,就可以直接对所有的查询结果求和。
上面的VLOOKUP函数中如果不使用IF形式,直接在数组公式中使用区域作为第1参数,也能得到相应的结果:
=VLOOKUP(I3:I7,C3:F10,4,0)
数组公式确实是EXCEL中的一大利器,使用好了能给我们的工作带来很多便利。