原文信息
标题:Lookup函数使用集锦作者: Excel技巧网
原文大意
文中主要介绍了7种应用场景:
-
快速返回多列查询内容。
使用Column()来计算Vlookup返回结果所在的列,代替手动的输入1、2、3类似的机械工作
-
Vlookup实现多条件查询
使用if(1,0)和数组公式,构建内存两列数据区域,然后使用Vlookup查找,返回匹配的多调校结果
-
查询不连续字段
作用和column()类似,vlookup第3参数中,返回结果所在列,由Match()函数动态计算得出,代替手动查找对应的列
-
Vlookup从右向左查询
使用if({1,0})返回动态的两列数据区域,和多条件查询的原理一样。
-
去除VLOOKUP查询结果返回的错误值
使用isNA()函数,首先判断vlookup返回结果是否为N/A,然后使用if()函数来做一个判断,如果不是N/A,则返回VLOOKUP查询的结果。
-
VLOOKUP搞定多条件判断(分段查询)
即使用模糊查询,建立分段数据表,区域段内的查询,返回对应的结果。
-
提取非空单元格
使用0/($B$2:B2<>"")构建一个包含0和#DIV!0的数组,然后使用lookup函数,查找1返回最后一个零的位置对应的数据,即能找到的最后一个不为空的单元格
拆为己用
根据原文中的三个公式,可以简单的总结出以下几种,编写公式的常用技巧:
1-IF10法
=vlookup(A9&B9&C9,IF({1,0},A3:A5:B3:B5&C3:C5,D3:D5),2,)
IF01法是指:在数组公式中,使用if语句构建一个两列的数据区域。其中参数1是数组{1,0},参数2是第一列数据,参数3是第2列数据。这样返回的结果,恰好是这两列数据组成的数据区域。
这两列数据区域可以用来:
- 结合&符号,实现多个查询条件合并,节省了一个辅助列。
- 数据返回列顺序互换,实现VLOOKUP反向查找,节省了辅助列。
2-列标填充法
=VLOOKUP(A1,A:E,COLUMN())
数字填充法是指:在VLOOKUP或LOOKUP中,都包含了一个参数,表示数据区域查询后,返回第几列的数据,通常这个参数是固定的数字。当返回数据较多是,固定的数字,不方便后续的修改和更新。
可以使用函数来代替这个数字,实现返回列自动更新。常用的函数有:
- COLUMN()或ROW(),对应VLOOKUP使用COLUMN(),HLOOKUP使用ROW(),根据单元格的移动,自定更新返回列参数。
- MATCH(),根据返回数据列的标题内容,自动计算出返回列参数。
3-LOOKUP找边缘
=LOOKUP(1,0/(B$2:B2<>""),B$2:B2)
LOOKUP找边缘是指,找出数组中最后一个非N/A或#DIV!0的数据。大致原理是这样的:
- 使用0/($B$2:B2<>"")类似的公式,构建一个只包含0和#DIV!0的数组(暂且叫做数组A)
- 使用LOOKUP(1,数组A,返回列)的公式,查找出数组A中的最后一个0,返回对应的数据。
- 向下填充公式,找出所有不为空的数据(数据会重复填充)
这个方法的关键点,在步骤1中,0除以的那个数组,要值包含true和false,然后在能形成0和#DIV!0的数组。
掌握了这几个技巧后,后续在VLOOKUP和SUMPRODUCT等复杂的函数中,都有可能会用得到。