在专栏中作者介绍过查找某个值最接近的值案例,这里我们将需求扩展一下,来查询一个值最接近的较大值和较小值。
也就是说,要查询到两个结果,一个是小于且最接近于指定值的数值,另一个则是大于且最接近于指定值的数值结果。

我们来看数据源,比较简单,是通过随机函数输出的一组数据,现在我们的需求是,要找到数字“1250”在A列中最接近的较大值和较小值。

从上图预览结果显示,较小值为“1243.1”,较大值为“1254”。
按照常规数据查询公式,我们可以使用vlookup或lookup函数,由于是查询接近值,所以vlookup函数设置第4参数为1,执行近似查询,而lookup函数会自动查询接近值。
所用公式表达如下图所示:

但从公式结果可以发现,得到的结果都是“1222.2”,虽然小于查找值,但不是最接近的。
为什么会出现这种情况?
因为vlookup与lookup函数都是执行二分法查询,所谓二分法查询,其逻辑是将一组数字均分成两部分,然后根据与查询值的比较,再次将上半部分或下半部分切割成两半,再进行与查询值比较,然后再继续均分切割……直到查询到与查询值相等或相近的值。
从这个逻辑来看,似乎运算比较复杂,但实际是在二分法查询中要求数据执行升序排序,当数据是有序的,那么通过二分法查询就非常快捷,尤其是在大量数据的查询运算中,二分法是具有优势的!
回到正题,既然数据场景不适用vlookup函数,那么我们使用增强版的查询函数xlookup。
先输入公式:
购买专栏解锁剩余52%