使用VLOOKUP函数的时候有没有遇到所要求返回的结果在前面时就会出问题,比如下面的情况,结果会返回错误#N/A
这是因为VLOOKUP函数查找结果时,要求返回的结果区域必须在查找的条件区域的后方,也就是右边,否则无法查找到相应的结果。
一般人到这里的时候会选择加一个辅助列,比如在返回结果的那一列前面插入一列,将条件区域的那一列复制过去,比如下面的方式,这个方式的缺点就是会破坏表的结构:
还有些人会选择其他方式比如用INDEX函数来实现,这里我就不做演示了,重点说一下,在不改变表的结构下使用VLOOKUP函数如何实现的问题。
我在G3单元格输入 =VLOOKUP(E3,IF({1,0},B2:B6,A2:A6),2,FALSE),就可以得到相应的结果:
那可以实现的关键点就是{1,0},之前提到过大括号{}就是数组,而这个地方都是固定数字,也就是常量数组。
具体介绍之前我先给大家演示一下,我使用的365版本,如果是2019等低版本是没有这个效果的,365版本可以有助于我们理解数组。我分别输入={1,2,3,4}和={1;2;3;4},我们可以看到={1,2,3,4}是横向排列的4个数据,={1;2;3;4}则是纵向排列的四个数据,其实就是间隔的符号不一样就有不同的结果,横向的用逗号, 纵向 就使用分号,如果在低版本的EXCEL中使用只返回结果1,这个大家可以不用太在意,实际在公式应用中是不受影响的。
通过上面的演示我们可以知道数组我们需要用{1,0},而不是使用{1;0},接下来我们理解下1和0的含义,1,0在这里其实是逻辑值,相当于TRUE和FALSE,我们可以用之前分享的最短的函数N函数来计算TRUE和FALSE的结果,我们输入=N(TRUE)和=N(FALSE)可以得到结果1和0。
if(如果为TRUE,TRUE返回结果,FALSE)返回结果,这里通过数组{1,0},我们知道这个数组是横向的,而B2:B6和A2:A5明显是纵向的,我们利用365版本做下数组的演示,我输入={1,1}+{1;2;3;4},我们可以得到一个结果,就是两列的结果,那就是说{1,1}两个都与{1;2;3;4}进行了求和,所以得到了两列数据。如果是两个横向的数组或两个纵向的数组求和则不会。
横向数组与纵向数组求和
相同方向数组的求和
通过上面的演示想必大家应该有一定感觉了吧,还是回到IF({1,0},B2:B6,A2:A6),我做下演示:
我觉得可以理解为{1,0},1的情况下if(TRUE,返回了B2:B6)在前面一列,0的情况下if(FALSE,返回了C2:C6)