比vlookup更强大的函数lookup函数(下:数组用法)

上次我们说了lookup的向量用法,今天说下它的数组用法。

-01-

函数说明

lookup函数的数组结构如下图第2种写法,有2个参数。lookup的数组用法是在数组的第一行或第一列中查找指定的值,并返回数组最后一行或最后一列中同一位置的值。

lookup_value:必须有。在数组中查找的值,可是是数字,文本,逻辑值,定义名称和单元格引用。

array:必须有。包含要与lookup_value进行比较的数字,文本和逻辑值的单元格区域。

与向量用法一样,数组用法,也有以下要求:

  1. 数组中的值必须按升序排列,否则lookup可能返回不正确的值。

  2. 如果lookup找不到lookup_value的值,它会使用数组中小于或等于 lookup_value的最大值。(模糊查找)

  3. 如果lookup_value的值小于第一行或第一列中的最小值(取决于数组维度),lookup会返回 #N/A 错误值。

-02-

示例解释

如下图所示,左表是一个姓名成绩源表,右表想根据姓名查出数学的成绩。在F列中先用vlookup精确查找,为了和G列中的lookup做对比。

F2=VLOOKUP(E2,A$2:C$9,3,),G2=LOOKUP(E2,A$2:C$9)。发现G列中很多和F列中的都对不上。这是什么原因呢?是因为lookup函数中的查找区域没有按升序排列。

对A列中的姓名排序,在A列数据区域中任选一个单元格,点击升序,发现lookup的值正确了,看下面第2张图。说明lookup要求查找区域为升序排列,而且在G2=LOOKUP(E2,A$2:C$9)这个公式中,查找的区域为A2:C9,一共3列,返回最后一列的值。此时按第一列查找,返回最后一列对应的值。

那你会问什么时候按行查询,什么时候按列查询呢?这个要看查询区域的行数和列数。如果列数大于行数,则按第一行查询;如果列数小于等于行数,则按第一列查询。下面举例说明。

在G2单元格中输入如下公式,结果为小包。查询区域,列数大于行数,按第一行查找,找到刘卓,返回最后一行对应的小包。

在G2单元格中输入如下公式,结果为58。查询区域,列数小于行数,按第一列查找,找到刘卓,返回最后一列对应的58。

在G2单元格中输入如下公式,结果为73。查询区域,列数等于行数,按第一列查找,找到刘卓,返回最后一列对应的73。

-03-

具体应用

1.求出下图左表中所有客服和发货员的总工资

AB两列为姓名和岗位表,F1:G5为相应岗位的工资表。

通常的做法是,添加辅助列,根据岗位查询出每个人的工资,然后用sumif条件求和。C2的公式为=LOOKUP(B2,F$2:G$5),要确保查询区域为升序排列,否则返回不正确的值。然后在D1单元格中输入公式=SUM(SUMIF(B:B,F9:G9,C:C)),三键结束求出所有客服和发货员的总工资。

如果要求不用辅助列,只要一条公式就算出,又该怎么做呢?这就用到lookup这个函数。在F10单元格中输入公式=SUM(IFERROR(LOOKUP(IF(B2:B23=F9:G9,F9:G9),F2:G5),))。lookup这个函数第一参数支持数组,这是它的优点,而vlookup第一参数不支持数组,还要用其他的方法才能实现。

解释一下这个公式,我认为这个公式的难点在于if函数,它是个数组形式,而且是个2维数组。B2:B23=F9:G9这个是不同维度的一维数组的比较,会形成一个二维数组。如下图I和J列。

IF(B2:B23=F9:G9,F9:G9),F2:G5)的结果如下图I和J列所示,意思是在B列岗位列中等于客服或者发货员的还是返回客服和发货员,不等于的返回false。这样再用lookup查询这个二维区域,就查找出所有客服和发货员的工资了,中间会有错误值,所以用了iferror,最后求和。

我觉得上面那个if形成的二维区域不好理解,所以用下面这个公式,F11=SUM(IFERROR(LOOKUP(IF((B2:B23=F9)+(B2:B23=G9),B2:B23),F2:G5),))。效果是一样的。IF((B2:B23=F9)+(B2:B23=G9),B2:B23)的意思是B列岗位列中是客服或发货员的,返回它本身,不是的返回false,这样的话是个一维数组。然后用lookup查找出来的就是所有客服和发货员的总工资,最后排除错误值,求和。

其实还有一种更好理解的方法,F13=SUMPRODUCT(LOOKUP(F9:G9,F2:G5),COUNTIF(B:B,F9:G9))。解释一下,LOOKUP(F9:G9,F2:G5)这个为查出客服和发货员的工资,形成一个数组;COUNTIF(B:B,F9:G9)这个为查出客服和发货员的个数,也形成一个数组,然后用sumproduct乘积求和。

好了,lookup的数组用法,你都学会了吗?

(0)

相关推荐

  • Lookup函数的几种用法

    学习函数,最基本的是要了解它的语法,并且要熟记于心 函数的定义:从单行或单列区域或者从一个数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式.数组区域共用一个公式:数 ...

  • 比vlookup更强大的函数lookup函数(上:向量用法)

    之前我们说过vlookup函数的用法,今天来说一个更灵活更强大的函数lookup函数. -01- 函数说明 这个函数有2种用法:一种是向量用法,一种是数组用法.今天先说向量用法,即下图第一种写法,它的 ...

  • Excel函数LOOKUP函数及应用

    ----------------------------------------------------------------------------- VLOOKUP函数的姊妹,专治各种不服. 常 ...

  • 比Vlookup更强大,用这个功能,自动完成数据查询

    小E为大家准备了100+Excel模板 领取直接关注公棕号[秋叶Excel],回复[头条]! 大家好,我是一只会大数据处理的技术小兔. 昨天,公司经理助理小谭来向兔子哥求助,原来经理想要看去年公司职员 ...

  • lookup函数的使用方法,含向量和数组形式实例及与vlookup的区别

    在 Excel 中,lookup函数有两种形式,一种为向量形式,另一种为数组形式:其中向量形有三个参数,数组形式有两个参数,即数组形式省略了返回结果域.无论是向量形式还是数组形式,查找区域必须按升序排 ...

  • 让Vlookup,Index+Match,Lookup让那些查找函数靠边站,这样查找才简单。

    在Excel中说到查找,你肯定就会想到Vlookup函数,如果你是一个资深使用者,那么你还会想Index+Match,Lookup,如果你是一个高手,你会想到Sumproduct,甚至Sumif. 本 ...

  • 这个文本替换函数,远比你想的更强大!

    点击上方蓝字关注 Excel应用大全 置顶公众号或设为星标,避免收不到文章 每天分享Excel应用技巧,让你不仅用得上,还用的爽! 原创作者:李锐 工作中很多问题看似复杂,其实都可以用Excel函数轻 ...

  • 比Vlookup更好用,Excel中最牛的CP函数来了!

    vlookup是工作中excel中最常用的查找函数.但遇到反向.双向等复杂的表格查找就头痛了. 在Excel中还有一对CP函数:Index和match,功能的互补性注定谁也离不开谁.看两个小例子就明白 ...

  • LOOKUP函数,以一敌百

    "我不怕学习10000 种腿法的人,我怕的是把一种腿法练习10000 次的人."--李小龙 "我不怕学习10000 种软件的人,我怕的是把一种软件练习10000 次的人. ...

  • LOOKUP函数多条件查询数据

    生命中对自己最好的爱是学会肯定自己.我们不懂得肯定自己,我们就会认为自己很糟糕.人生的重塑更重要是来自内在意识的重塑.当我们发自内心地认为自己糟糕的时候,我们就会变得随意与随波逐流.学会肯定自己,我们 ...