应用技巧十:特殊的查找函数

经常进行函数查询的用户对LOOKUP函数应该不会陌生,它主要用于在查找范围中查询用户指定的查找值,并返回另一个范围中对应位置的值。其查询原理与VLOOKUP函数和HLOOKUP函数中当第4个参数为1或TRUE时非常相似。

LOOKUP函数目前已经被使用得非常广泛,具体的函数语法如下:

LOOKUP(lookup_value,lookup_vector,[result_vector])

LOOKUP(lookup_value,array)

为了便于用户更加清晰地了解该函数的用法,现将该函数的各个参数含义介绍如下。

l lookup_value查找值:可以使用单元格引用、常量数组和内存数值;

l lookup_vector查找范围和result_vector结果范围:同样支持单元格引用和常量数组;

l 同时,在第2个语法中列出的array参数中,LOOKUP函数还支持使用二维数组进行查找,函数返回二维数组中最后一列(或者一行)的结果。

注意:中文版Excel 2010中关于LOOKUP函数的帮助文档仍然存在错误,查找范围的数据并非必须升序排列。

只有当需要在查找范围中查找一个明确的值的时候,查找范围必须升序排列;当希望查找一个不确定的值时,如查找一列数据最后一个值,查找范围并不需要严格地升序排列。同时,LOOKUP函数支持忽略空值、逻辑值和错误值来进行数据查询。

同时,LOOKUP函数是Excel查找类函数中位数不多的在函数内部支持数组运算的函数,而且经过内部数组运算后,该函数几乎可以完成所有VLOOKUP函数和HLOOKUP函数的查找任务,目前已经被广大Excel函数爱好者们广泛使用。

提示:深入理解LOOKUP函数的查找原理

LOOKUP函数以其高效率的运算速度逐渐被Excel函数公式爱好者们所喜爱,在Excel Home技术论坛上,LOOKUP函数已经被很多用户运用到大量的实际工作 中,特别在数组公式、内存数组应用中被更加广泛地运用。

经过大量的数据分析表明,LOOKUP函数采用“二分法”的原理进行数据查找,因此运算速度肯定高于使用“遍历法”的函数查找。

“二分法”查找原理解释如下:

1. 数据升序排列(默认);

2. 在由N个数据组成区间(1~N)查找某值X。

假设查找范围中有100个数据,LOOKUP函数首先比较中间值(第INT(1+100)/2=50个数据)与X的大小,如果该值比要查找的X小,那么由于数据是升序的,则收敛搜索区域为“右区间”即第51个~第100个。反之则在“左区间”查找,进入次级区间后,将再度使用刚才的方法进行对比查找。如果中间值刚好=X,则在右区间中继续查找,知道返回最后一个等于X的位置为止。

另外,与“二分法”不同的另外查找数据方法:“遍历法”-顾名思义,对所有数据都要从头到尾“扫描一遍”。

同时,针对其查找原理进行推算得出近似的运算速度比较结果如下。

假设遍历法=N,二分法=POUNDUP(LOG(N,2),)。

即对LOOKUP函数对数据查找范围反复使用逐层减半地缩小搜索 范围,从而达到加快查找速度的目的。

一、使用LOOKUP进行查询

示例1从成绩明细表中查询学员总成绩。

如图1所示,展示了某年级学员的某次月末考试成绩表,下面使用LOOKUP函数来实现查询学员的总成绩。

注:为了加快查询速度,学员姓名已经按升序排列。

假设F12单元格为选择的学员姓名:孙佩,F13单元格公式为:

=LOOKUP($F$12,$B$3:$B$10,$I$3:$I$10)(公式1)

或:

=LOOKUP($F$12,$B$3:$I$10)(公式2)

公式1中使用了LOOKUP函数的标准用法,分别针对B列姓名进行升序查找,并在I列中返回学员总分结果。

而公式2主要利用LOOKUP函数在二维区域中的查找原理,函数在B3:I10的区域中最左列进行姓名查找,并返回二维区域中最后一列的总成绩。

利用这个技巧的优势在于,用户无无须像VLOOKUP函数必须指定返回值的列数,公式更为简单。

二、代替VLOOKUP函数查找

通过上节中对LOOKUP函数的介绍,用户已了解LOOKUP函数可以在很多时候代替VLOOKUP函数来进行升序查找。如果数据在无序状态下,LOOKUP函数同样可以利用其内部数组运算的原理来实现无序查询。

示例2利用LOOKUP函数实现无序查询。

如图2所示,展示了一份员工信息表,希望在B3单元格通过B2的姓名查询其部门归属,从图中明显看到结果返回错误。在下面的示例中,将利用LOOKUP函数来实现姓名数据的无序查询。

在原B3公式中,由于信息表中E列姓名未按升序排列,因此公式返回错误结果。如果这时使用LOOKUP函数,B6单元格的公式修改如下:

=LOOKUP(1,0/(E:E=$B$5),F:F)

公式主要使用了查找姓名在信息表中有效的姓名范围中进行比较判断,如(E:E=B5)比较结果为:{FALSE; FALSE; FALSE; FALSE; TRUE;FALSE; FALSE}

再利用0除以这个内存数组,结果为:{#DIV/0!; #DIV/0!; #DIV/0!; #DIV/0!; #DIV/0!; #DIV/0!; #DIV/0!; #DIV/0!},最后在这个数组中查找数值1,返回小于等于1的最大值位置,即前面结果中0的位置(位置6),返回对应的部门名称:项目管理部。

此算法是LOOKUP函数在无序查找中的典型用法,由于函数本身支持数组内部运算,因此该公式无须使用数组公式组合键进行输入,目前已经被很多用户广泛使用。

提示:在Excel2010中,已经支持用户选择整列数据(如:E:E=$B$5)进行数据比较操作,Excel会自动选择有效数据区域进行处理,而不会像Excel2003返回#NUM!错误结果。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容