EXCEL,神奇的lookup()函数

lookup()

  • 无比强大,也相当麻烦
  • 最大的优势:返回的是符合条件的最后1个数据
  • 原理是二分法查数据
  • lookup() 中间过程会用到序号(绝对的或相对的)
  • LOOKUP(H5,B9:B28,D9:D28)
  • LOOKUP(H5,B:B,D:D)

 

lookup() 使用注意点

  • 需要用lookup() 查询的时候,要查询的数组,必须是升序的。(目标数组可以不用),如果不是升序,会出现错误
  • 如果lookup() 数据升序,且查不到目标值,不会报错,函数会返回最后一个值的序号。
  • 这个最好的就是,允许数组自由偏移。
  • 既不需要vlookup()那样从左边第1列查起,也不需要2列对齐,但2列最好数据个数相同。

 

下面的例子

  • 可以看到,如果查询的数据,2列是平齐的,
  • LOOKUP(D4,B4:B15,A4:A15)
  • LOOKUP(D4,B:B,A:A)
  • 可以看到,两种查询方法结果都一样,都i是查找符合条件的最后1个数据

 

  • 可以看到,如果查询的数据,2列是错开的
  • LOOKUP(L4,J8:J19,I4:I15)  查询的是相对的位置的另一列数据
  • LOOKUP(L4,J:J,I:I)              查询的是全列对应的数据,也就是同行数据,也可以说是无意义

 

lookup() 的查询特点

  • 需要数据升序排列
  • 如果可以找到,返回的是最后1个符合条件的数据
  • 如果找不到,会返回最后1个最大的数据

 

lookup()查不到不会报错,会返回列末尾,这点可以利用!可故意利用

  • 比如这样取到一列的末尾,达到 VBA的  range().end(xldown) 的效果
  • LOOKUP(1105,X:X,Y:Y)

 

lookup() 的特殊写法

  • lookup()有一种特殊写法,可以无视 查询数组是否排序
  • lookup(1,0/(a:a=15,b:b))
  • 特殊写法,只适合查符合条件的最后1个,不能查数列中没有的数。
  • lookup 虽然不适合查符合条件的最后1个,但是可以故意查数组中没有的数,从而查行,列里的最后的一直值得。!

 

 

lookup() 的特殊用法---查多列

  • 如果 lookup() 查找的是多列,那么会自动按区间匹配,<=的合适区间
  • LOOKUP(G21,B9:C13)
  • LOOKUP(AG4,AE5:AF11)
  • LOOKUP(AH4,AE5:AF11)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值