Vlookup函数的大表哥介绍

谈到匹配函数,杠把子肯定是Vlookup函数,由于Vlookup前期的文章已经分享过了,今天分享Vlookup的大表哥,谁是他的大表哥呢?有人会说Hlookup,No!No!No!他俩是孪生兄弟的关系,他的大表哥是Lookup。有朋友让我写一篇Lookup的应用分享,我就老老实实写了一个。今天会从Lookup模糊匹配用法,精确匹配用法,特殊用法三个方向进行分享。

第一部分:模糊匹配用法

这个是模糊匹配的典型应用案例,即某个数字区间返回一个固定的值。重温一下如果用Vlookup函数实现

=VLOOKUP(C2,$F$2:$G$4,2,1) 找什么,在哪里找,返回第几列,最后一个值尤为重要(是1)

那如果使用Lookup函数如何实现呢?

方法一:

公式:=LOOKUP(C2,F1:G4)

这种使用方法是数组形式,Lookup第一个参数是要查找的内容。第二个参数是一个区域(这个区域是行数大于等于列数),且这个区域的第一列必须从小到大排序。这个函数的返回值就是矩形区域的最后一列。

如果第二个参数的区域列数大于行数,则和Hlookup的模糊匹配相同,在这里不做展开。

方法二:

公式:=LOOKUP(C2,F1:F4,G1:G4)

这种使用方法是向量形式,个人比较喜欢这种方法,接三个参数,第一个参数是找什么;第二个参数是以什么作为对比,这个必须是升序进行排列;第三个是返回什么。

小编观点:其实Lookup函数在模糊匹配上数组用法和Vlookup的模糊匹配没有什么差异,第二个向量用法会比Vlookup灵活一些,实战用处只大了那么一点点点。

第二部分:精确匹配

案例要求使用名字查找对应的评分。案例实现:

公式:=LOOKUP(1,0/(B2:B7=E2),C2:C7)

这个方法是比较巧妙的,所以需要各位朋友睁大双眼观看哈!大家我们输入第一个参数找什么呢?输入的是1,在哪里找呢,是用0除以姓名那一列等于中岛美嘉,第三个参数是填写返回什么值,我们把评分的那一列选中。以上就是函数的基本编写原则。

接下来和大家分享函数的拆分原则和思路。我们从内向外拆分,先拆分B2:B7=E2,这个是姓名那一列等于中岛美嘉,有前面vlookup排错,大家也知道两个单元格相等判断,返回的是真假,这样子除了第三行数据外,其它的返回值都是false,只有中岛美嘉返回的是true。在Excel中,True等同于1,False等同于0.

用0除以True和False的数组,则0除以1的时候还是返回0,但是正常分母是不可以为0的,所以其他值返回的都是错误。

回归Lookup大函数,找什么呢,找1,在哪里找呢,发现第二个参数是个数组,除了数组中的第三位是0,其它都是报错的。之前分享过,lookup在这里就是模糊匹配用法,所以电脑只能认为第三行数据是电脑找到的,则返回了评分数组中的第三位,也就是5。

小编观点:个人感觉精确匹配使用Lookup其实有点局限性,单纯的精确查找用Vlookup即可,如果是遇到精确匹配的反查,其实用Match和Index效率更高。当然Lookup我最喜欢的应用就是实现左右相互包含时候,与Find函数的组合应用。详见我其他文章。

第三部分:特殊用法

Lookup当然也有自己比较独特的应用,在这里分享一个案例。如何返回最后一个文本或数值。

比如有些表格是有汇总求值的,我们想获得这个表的最后一行数据,怎么用Lookup函数实现呢?

公式:=LOOKUP("座座座",A:A,C:C)

这个是模糊匹配用法的变种,根据模糊匹配原则,第一个参数是查找什么,第二个参数是以什么作为对比,第三个参数是返回什么。

然后我讲第一个参数设置为一个足够大的文本,文本如何比对大小呢?是根据汉字转化为拼音进行对比,如座(zuo)的Z比汇(hui)的H大,所以座在汉字中是相对比较大的文字。

因为第一个参数“座座座”都比A列中的大,所以电脑只能返回最后一列数据对应C列的值了。

小编观点:这种用法虽然不是十分常见,但是比较巧妙,是拓展函数编写思路的一个很好的应用!

原文发布于微信公众号 - 阿凯的Excel(akexcel)

原文发表时间:2017-04-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

前端面试中常见的算法问题总结

虽说我们很多时候前端很少有机会接触到算法。大多都交互性的操作,然而从各大公司面试来看,算法依旧是考察的一方面。实际上学习数据结构与算法对于工程师去理解和分析问题...

721
来自专栏书山有路勤为径

区间查找

给定一个排序数组nums(nums中有重复元素)与目标值target,如果 target在nums里出现,则返回target所在区间的左右端点下标,[左端点, ...

622
来自专栏猿人谷

对缓存的思考【续】——编写高速缓存友好代码

开篇 上一篇博文对缓存的思考——提高命中率详细介绍了高速缓存的组织结构,并通过实例说详细明了cpu从高速缓存中取数据的过程,对于缓存的工作机制应该有了清晰的认识...

19510
来自专栏编程

C语言编程练习之——计算一个整数有几位

如果我们得到一个整数,比如:123,要获取这个整数有几位,该如何使用C语言进行计算呢? 这个题目,牵扯到一点算法,要稍微思考一下。 我说一下我的思路: 在大的思...

1848
来自专栏King_3的技术专栏

leetcode-371-Sum of Two Integers

2106
来自专栏cs

爬虫前的准备

2966
来自专栏C/C++基础

求二叉树的深度和宽度

题目: 输入一个二叉树的根节点,求该树的深度。从根节点到叶子节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度包含的节点数为为树的深度,即二...

1062
来自专栏程序猿DD

Java中的即时编译(Just-in-time compilation)

作者:知秋 原文:http://t.cn/RYLPEMc 像其他一些编程语言一样,Java通常也被称为“编译语言”。但有时你可能会感到困惑,尤其是当有人告诉你J...

1965
来自专栏TensorFlow从0到N

讨厌算法的程序员 6 - 归并排序

? 分而治之 分而治之 从算法设计的分类上来说,插入排序属于增量方法。在排序好子数组A[1 ‥ j-1]后,再将单个元素A[j]插入子数组的适当位置,产生排序...

2464
来自专栏未闻Code

使用有限状态机原理实现英文分词

使用Python开发一个英文句子分词程序,把一段英文句子切分为每一个单词。不能导入任何官方的或者第三方的库,也不能使用字符串的split()方法。

531

扫码关注云+社区