首页 > 技术文章 > excel:多条件查询(lookup函数)

24-01 2020-08-13 11:25 原文

原始数据:

目标数据:

公式:

=LOOKUP(1,0/(($C$2:$C$11=$N2)*($B$2:$B$11=O$1)),$D$2:$D$11)

lookup函数解析:

二分法查找:

定义三个索引值:最大值max,最小值min,中值mid=(max+min)/2取整

1,数据排序(升序)

2,循环查询mid的值,判断目标值与查询值关系:

  相等:获取目标,结束循环;

  目标值大于查询值:min=mid+1,mid=(max+min)/2取整;

  目标值小于查询值:max=mid-1,mid=(max+min)/2取整。

 

lookup函数采用二分法查找,默认查询区域升序排列(若查询区域未排序,可能返回的结果不正确),

获取目标后,会查询相邻的下一个,若相邻下一个等于目标值,继续向下查询,

直到连续相邻的值不等于目标值,记录最后一个符合条件的值(索引)

如,查询A:

在A5(第1个二分位)查找到了A,本来查找结果应该是B5的860,但由于A6的值也是A,

所以查找结果变成了第6行的值。而A8虽然也是A,但和A5不是连续相邻相等区域。所以结果不是B8。

 

lookup函数查询时,若查询序列没有与目标值相等的值,会返回小于目标值且最接近目标值的值:

如,查询350的提成比例:

查找过徎:

从第1个二分位处(A4)处开始查找,200<350,向下查找。

在第2个二分位处(A6)的值400>350,所以要向上查,上面只有A5一个值300,且该值小于350,

所以B5的值即为最终查找结果。

 

推荐阅读