本文转载自公众号:Excel精英培训,作者:赵志东老师,感谢赵老师无私分享!

兰色以前发过好多关于lookup函数的应用的例子,它的强大功能令很我们眼花缭乱,但绝大部分用户只停留在套用阶段,至于运算原理却没几个人能说明白。想了解lookup的查找原理和更深入的使用它,你必须了解今天要学习的二分法原理。

从一个例子说起:

【例】下图中左表和右表只有第5行的会员名子不同,但在第11行查找B对应的消费金额时结果却不同。甚至左表中查找到的是会员A的消费金额。

公式:

B11 =LOOKUP(A11,A2:B8)

E11 =LOOKUP(D11,D2:E8)

其实,lookup函数很清醒,一点都不傻,只是我们对它了解的太少了!

lookup函数查找是遵循二分法查找原理,所以要看懂上例中的查找结果,必须要了解什么是二分法查找。(二分法是excel中最难理解的函数知识点,建议同学们洗把脸清醒一下再向下看)

一、什么是二分法。

从前向后一个一个的查找,是遍历法。二分法不是这样,它是从二分位处查找,如果查找不到再从下一个二分位处查找,直到查找到和他大小相同或比它小的数。

二、基本原理。

想了解二分法,必须了解下面2个原理。

1、二分位的判定

说白了,二分位就是中间的位置,如果有7个数(lookup函数的第2个参数的总行数),那么第4个数就是中间的位置。

=LOOKUP(A11,A2:B8)

如果有10个数呢,则第5个位置是二分位。这里有一个公式可以计算出来。

=INT((总行数 1)/2)

2、查找方向确定

当在二分位查找不到时,接下来该怎么查找呢?

当上一次二分位值大于查找的值时,向上继续查找,在二分位上面区域找出新的二分位,直到找出符合条件的值。如下图中,先从第5行查,因为C>B,所以就向上继续查,上面区域D2:D4区域的二分位值是D3,而D3的值是B,则对应的E列值800是是查找结果。

当数值小于查找的值时,向下继续按二分法查。如下图中,先查找第5行,发现AB,所以A7的A最终符合条件(查找到和目标值相等,或比目标值小的值)

当二分值等于查找的值时,向下逐个查,最后相邻且相等的值即符合条件。

如下图所示,在A5(第1个二分位)查找到了A,本来查找结果应该是B5的860,但由于A6的值也是A,所以查找结果变成了第6行的值。而A8虽然也是A,但和A5不是连续相等区域。所以结果不是B8。

三、lookup示例解析

1、区间查找。

【例1】如下图所示,是典型的区间查找公式。查找350对应的提成比率是7%。

查找过徎:

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

在第2个二分位处(A6)的值400>350,所以要向上查,上面只有A5一个值300,且该值小于350,所以B5的值即为最终查找结果。

2、查找最后一个。

【例2】如下图所示,查找顾客A最后一次的消费金额。

分析:

这里肯定不能直接用Lookup查找B,否则按二分位查找,结果不一定是最后一个。所以就用0除的方法把符合条件的变成0,不符合条变成错误值:

=0/(A2:A8=A11)

结果是

{0;0;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!}

由于lookup会过滤掉错误值,所以在lookup眼中,上面的数组是这样的:

{0;0;0}

然后用1查找最后一个0的位置

=Lookup(1,0/(A2:A8=A11),B2:B8)

这里1是任一个大于0的值,因为大于0,所以用二分法查找时,会一直向下查找,直到最后一个0值。

兰色说:lookup的二分法查找,是跳跃式的查找。它总认为被查找的1组值是从小到大排列,如果遇到小的就向下找更大的,如果遇到大的就向上找更小的。

c语言中lookup函数功能,Lookup函数详解相关推荐

  1. Delphi Format函数功能及用法详解

    DELPHI中Format函数功能及用法详解 DELPHI中Format函数功能及用法详解function Format(const Format: string; const Args: array ...

  2. python语言中with as的用法使用详解

    本篇文章主要介绍了python语言中with as的用法使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 With语句是什么? 有一些任务,可能事先需要设置,事后做 ...

  3. c语言常量的正确表示const,C语言中的const和free用法详解

    注意:C语言中的const和C++中的const是有区别的,而且在使用VS编译测试的时候.如果是C的话,请一定要建立一个后缀为C的文件,不要是CPP的文件.因为,两个编译器会有差别的. 一.C语言中的 ...

  4. c语言中的fscanf是啥意思,详解C语言中fgets和fscanf区别

    fscanf函数是C语言的文件格式读取函数的方法之一,它使用空格.制表符和回车来分割不同的单词,这样可以让我们使用起来更方便,下面就让爱站技术频道小编带你来学习详解C语言中fgets和fscanf区别 ...

  5. C语言中task的用法,C# Task详解

    C# Task详解  https://www.cnblogs.com/zhaoshujie/p/11082753.html 1.Task的优势 ThreadPool相比Thread来说具备了很多优势, ...

  6. python语言怎么用-python语言中with as的用法使用详解

    With语句是什么? 有一些任务,可能事先需要设置,事后做清理工作.对于这种场景,Python的with语句提供了一种非常方便的处理方式.一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取 ...

  7. c语言中sam的用法,samtoos用法详解.pdf

    samtoos用法详解 冠 缠 井 缉 滩 赂 框 挎 韧 击 微 耀 镀 稚 惺 那 纤 芳 刚 叛 弓 拍 床 衣 倾 讳 熟 佣 嘻 吸 敷 还 失 馒 霜 磨 臻 塑 梦 坐 炮 要 鹅 妄 ...

  8. html语言中,amp;amp;用来表示,详解HTML5中的amp;amp;lt;templateamp;amp;gt;标签

    标签,是HTML5入门中的重要知识,需要的朋友可以参考下 一.HTML5 template元素初面2PpHTML5中文学习网 - HTML5先行者学习网 元素,基本上可以确定是2013年才出现的.干嘛 ...

  9. Elang之ETS系列函数功能与用法详解

    最常用函数: new(Name, Options) -> tid() | atom() 新建一个表名为Name的ETS表,并返回表的一个标识符. Types: Name = atom() Opt ...

  10. zookeeper入门 - 3 - API常用函数功能与参数详解

    <zooker入门系列教程>: 1 - 如何在单机上实现ZooKeeper伪机群/伪集群部署 2 - 解读zookeeper的配置项 1. zookeeper初始化 zhandle_t * ...

最新文章

  1. 2020年github文件高速下载方法
  2. 新装iis 页面503错误 DefaultAppPool停止解决方案
  3. oracle进程对文件没有写权限,ORACLE SYS用户没有权限一天半的救库过程
  4. 单片机断电后不保存程序_为什么单片机语音芯片既有flash又有EEPROM
  5. SpringBoot热部署之devtools案例(学习笔记)
  6. 基于角色的访问控制'的权限管理的数据库的设计实现
  7. 西瓜书机器学习总结(一)
  8. onvif协议服务器端口,通过onvif协议接入海康、大华NVR步骤
  9. php fpm mysql 长链接_PHP Mysql数据库 长链接 短链接 (连接池 ?)
  10. android医疗管理软件,智能医疗信息管理系统(医院版)
  11. protobuf android 编译,Android 中protobuf 的安装,编译和使用
  12. keras python3.7_主页 - Keras 中文文档
  13. javaweb调用第三方短信接口
  14. android模拟器 adb 命令,安卓模拟器下 使用ADB命令
  15. LaTeX中的参考文献BibLaTeX
  16. 信能阳光——打造国内体育照明领域的旗舰品牌
  17. 亲测可用--word报错:子过程或函数未定义
  18. #踩过的坑# 企业微信被封了怎么办?
  19. 苹果手机数据转移到新手机_怎么把旧手机的东西导入新手机?苹果手机数据迁移的几种方法...
  20. php表格好看样式,怎么用css制作好看的表格?【示例】

热门文章

  1. 【java】StringBuilder的常用两种方法与练习
  2. 文件传送到服务器的软件,远程服务器文件传输软件
  3. 怎么固定串口号_工业交换机的背板带宽怎么计算?
  4. 7-5 求前N天 (30 分)
  5. 每日程序C语言36-数组中前面各数顺序向后移动m个位置
  6. python列透视_python – 在pandas数据帧中透视列和列值
  7. mysql报196271错误_微软补丁造成MYSQL及Windows经常连接失败解决方法
  8. mysql fulltext索引
  9. c++ STL find search
  10. 内存管理,数据类型的基本使用与基本运算符(python2中与用户交互)