VLOOKUP、COLUMN、MATCH函数
用VLOOKUP函数查找多列数据时,如果需要查找的数据列在查找区域中是连续的。那么这时我们只需要修改VLOOKUP的第三个参数,也就是查找数据所在列数就可以完成查找。但是单独地一个一个修改VLOOKUP函数的第三个参数,有时也是很耗时间的。如下图,示例中只有4列也许不觉得时间很久,随着列数的增加浪费的时间将会越多。
![](https://tukuimg.bdstatic.com/scrop/87c1e6cb823c9409fbd5a6a1f981f870.gif)
如果需要查找的列在原始区域的列数是递增的,我们可以使用COLUMN函数来自动化参数的输入。
我们可以先看看,COLUMN函数的语法及其返回的值。
COLUMN([reference])
我们可以看到COLUMN函数的参数是用方括号表示的,这说明该函数的参数是可以缺省的。就是说我们可以不输入参数值。COLUMN 函数返回给定 单元格引用 的列号。 例如,在B列任意单元格公式=COLUMN ()返回2,因为B列的列号是2。
那么我们将COLUMN函数向右拖动将分别生成2、3、4、5.刚好是我们VLOOKUP需要的第三个参数。
所以结合相对引用可以将上述B9中单元格的公式改为:
=VLOOKUP($A 9 , 9, 9,A 2 : 2: 2:E$6,COLUMN(),FALSE)
然后往右拖动填充公式就可以一次性完成数据查找了。是不是超快捷?
![](https://tukuimg.bdstatic.com/scrop/322100e17982652936ff38203873b086.gif)
这里切换绝对引用使用了快捷键 F4。
上面的例子是理想情况下的,实际情况是很多时候我们需要查找的数据是从原数据区域中挑选几列,甚至会将原来的列顺序打乱。虽然这种情况下,需要做的也是修改第三个参数的数值,但是简单的使用COLUMN函数却无法满足需求,因为第三参数并不是递增的。这时我们需要用的MATCH函数。
MATCH的英文名称是匹配。所以顾名思义,使用 MATCH 函数在指定单元格区域内中搜索匹配的项,然后返回该项在此区域中的相对位置。
MATCH(lookup_value, lookup_array, [match_type])
例如,在B8中输入公式 =MATCH(B8,A1:E1,0)返回数字 2,因为物品是该区域中(标题行中)的第二项。
![](https://tukuimg.bdstatic.com/scrop/9229690c9df1cd02cbcae943b06b42ca.gif)
以此类推,可以快速返回其他标题所在的列数。返回的结果正是我们VLOOKUP需要的第三个参数。所以B9中单元格的公式可以改为:
=VLOOKUP($A 9 , 9, 9,A 2 : 2: 2:E 6 , M A T C H ( B 8 , 6,MATCH(B8, 6,MATCH(B8,A 1 : 1: 1:E$1,0))
![](https://tukuimg.bdstatic.com/scrop/3492e20ca32f4b36939ced8e7e6e3b11.gif)