excel 教程:lookup 函数的二分法

你在excel里用LOOKUP函数的时候,它其实是用二分法在找东西。这个思路就是把数据切开,像切蛋糕一样一点点缩小范围,最后找到你要的目标。这个方法特别快,不过有个坏处就是你给的第二个参数必须是按从小到大排好的,不然结果可能就不对了。 那标准的二分法是怎么做的呢?其实就三步。第一步是把中间值和要找的那个数比一比。要是中间值比要找的数小,那就在下面那半区接着找;要是中间值比要找的数大,就在上面那半区找。第二步就是处理边界情况,比如搜索到最后一个数据还是比要找的数小,那直接把最后那个数据对应的结果返回就行;要是最后一个数据比要找的数大,那就往上回退找到最接近的那个不大于要找的数的位置,再拿那个结果。第三步是写公式,因为每次都砍半嘛,所以公式就是INT((总行数+1)/2),把总行数填进去就能一键定位中间位置。 你要是碰到第二参数是乱序的怎么办?这时候LOOKUP会直接报错。别急着放那儿不管了,只要给它“穿件有序外套”就行。比如用数组配合0和条件生成个错误值序列,像这样写=0/(D8=A1:A17),就能得到{0,#DIV/0!,#DIV/0!,…}这样的数组。LOOKUP会自动忽略那个#DIV/0!,只留下升序排列的数字索引,然后按照标准的二分法继续搜索。不过有个地方要注意,查找值这个参数千万别省略,不然可能会出多值匹配但只返回第一个匹配项的尴尬情况。如果真的要用0做查找值,一定要确认数据是唯一的。 除了查数字,LOOKUP还有别的本事呢。比如你想提取英文字母,只要把字母表按ASCII排序后再做二分法就行;提取汉字拼音首字母也是一样,先把汉字转成拼音再排序定位;还有像ID、学号这种唯一标识符,只要第二参数保持升序或者能被包装成升序的样子,LOOKUP就能用这套逻辑帮你快速定位。 给大家总结一下吧:二参必须升序排列才行;查找值这个参数千万别省略;边界情况也要提前判断好。掌握了这些要点,LOOKUP的二分法就能在你手里变成一把瑞士军刀了。无论是数字、字母还是汉字都能一次到位。祝你在表格里大获全胜!