Excel公式中的LookUp三剑客(可以取代Vlookup的神秘公式)

1.前言

Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。由于他借组公式发挥很强的计算、数据处理能力,所以涉及范围极广,从财务报表到工程预算,他也可以成为家庭收支计算的重要利器。在和同事闲聊的时候一把也会用Vlookup函数衡量你对excel的掌握程度,然后他真的有这么强的吗,有没有可以取代他的函数?那么这次,我们主要从Excel的公式入手,分析一下他里面的涉及到的lookup的三个函数,因为他们可以让我们达到事半功倍的效果。那么lookUp究竟是什么呢,让我们继续往下看。

2. LookUp函数

2.1 基本语法

2.1.1 语法一

=LOOKUP(lookup_value,lookup_vector,[result_vector])

参数:

lookup_value:要查找的值。

lookup_vector:需要查找的列

result_vector:可选,通过loolup_value在looup_vector查找到值,对应此选择列的值。

案例:

我为此准备了试验数据:

测试数据
实例1

首先我们明确lookup查找的方式是通过二分查找法实现的,所以对于被查询列必须排序,否则会出现问题。好了,我们就分析一下他的执行顺序。我们以6000为例。step1,数据源为5列,所以二分位为pos = int((5+1)/2) = 3,位置3所对应的数值为3000,excel认定比6000小,应该从下面查找。接下来数据范围变成4500、9000,索引位置是pos = int((2+1)/2) = 1,即所对应的位置是4500,比6000还小,继续查找,发现9000比6000大,所以按照上一个索引位置作为输出值,即输出20。

我们进一步做一分析,对于这个公式的三个参数(数值,数组1,数组2),后面两个数组的个数是一致的,而且保证一一对应。公式执行逻辑是利用二分查找法进行查询。直到查到为止(如果查不到,按照上一个遍历值为匹配项),根据数组1的匹配项的索引值在数组2获取到数值作为返回值。所以我们就有了如下的公式变形:

=lookup(1,0/(查找值=查找列),结果列)

他能做什么事呢?我们看一下例子:

好像可以实现vlookup的功能,是不是很强大了。接下来我们在做几个变种:

1)逆向查找,这是vlookup所不具备的,就是我们查找的列在后面,返回的数据在前面。

2)多条件查询

2.1.2 语法二

=LOOKUP(lookup_value,array)

参数:

lookup_value:要查找的值。

array:要查询的数组,并返回

这个公式依然使用二分查找法的思路,只不过功能相对于语法一逊色了不少,这个也许就是excel先前版本的公式吧。

3. VLookUp函数

=vlookup(looup_value,table_array,col_index,[range_lookup])

参数:

lookup_value:要查找的值。

table_array:要查询的数据区域,是一个表格

col_index:返回的数据相对于匹配项的第一列

[range_lookup]:是否精确匹配。如果是0,为精确匹配;如果是1,近似匹配,但是首列的值必须排序。也就是说,如果是近                                  似匹配,他任然和lookup一样,采取二分查找法进行寻找匹配项。

在vlookup函数中,他的四个参数(数值1,表格1,数值2,标志位)。我们以第一列说,河北在表格表格1查找,在第一行找到记录,所以返回表格1的第数值2列的数据,即为10。

如果我们现在把数据源两列换一下位置,数值2变为-1,因为是在左边,看看输出什么结果:

我们发现差不到信息。这也验证了上面提到的vlookup不能逆向查询数据。是不是感觉lookup函数的强大之处了。

我们在做一个试验:

通过上面的可以看出,查询的数据只对于表格第一行查询。

关于近似匹配输出什么样的结果:

我们发现和lookup的功能差不多,这里就不多说了。

 

3. HLookUp函数

这个函数我们用的不是很多,但是作为lookup函数的一个成员,我们简单说一下。

首先,我们先看一下语法:

=Hlookup(looup_value,table_array,row_index_num,[range_lookup])

参数:

lookup_value:要查找的值。

table_array:要查询的数据区域,是一个表格

row_index_num:要返回哪一行的数据

[range_lookup]:是否精确匹配。如果是0,为精确匹配;如果是1,近似匹配,但是首列的值必须排序。也就是说,如果是近                                  似匹配,他任然和lookup一样,采取二分查找法进行寻找匹配项。

上图中显示的公式是A11列的公式。这个函数是找A10的值5从A1:J1中找到匹配项,这里找到索引位置为5(E列),然后返回第二行所对应的数据E2(15)。

至于近似匹配和上面的公式一样,采用二分查找法的方式实现。这里就不举例了,大家有兴趣的可以尝试一下。

4.总结

讲到这里,是不是感觉lookup函数家族的强大,同时是不是从此放弃vlookup函数,喜欢上lookup函数了。哈哈,其实每个函数都有他存在的必要性,虽然lookup显得强大,但是这种复杂的语法让人不好接受,同时vlookup可以实现为和还要给自己找事呢,你们说对吧?

发布了88 篇原创文章 · 获赞 97 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/oYinHeZhiGuang/article/details/104705684