轉(zhuǎn)自:EluneXY的新浪博客:http://blog.sina.com.cn/s/blog_9b8b66380101gfbz.html
前面講了VLOOKUP的基本用法既穆,以及衍生用法汞幢,但比如說多條件查找质帅,要?jiǎng)佑脭?shù)據(jù)區(qū)域的串接匹配,牽扯到的數(shù)據(jù)運(yùn)算量實(shí)在太大了,很不利于工作表的計(jì)算,也不方便書寫俏扩,今天我們著重講一個(gè)多條件查找或者復(fù)雜條件查找的通式——LOOKUP。
=LOOKUP(1,0/((區(qū)域1=條件1)*(區(qū)域2=條件2)*(….)),目標(biāo)區(qū)域)
可能似曾相識(shí)吧弊添?可能還有寫成=LOOKUP(2,1/().....
這個(gè)可是很多前輩高人都津津樂道的公式哦录淡,基本上屬于“萬金油”,快無所不能了表箭,重點(diǎn)還在于她能人所不能……
我們先了解一下LOOKUP函數(shù)的基本語法赁咙,LOOKUP比較特殊,有矢量形式和數(shù)組形式:
- 數(shù)組形式很簡(jiǎn)單免钻,只有兩個(gè)參數(shù)彼水,就是從第二參數(shù)的數(shù)組區(qū)域里,根據(jù)查找值返回最后一列或者一行對(duì)應(yīng)的結(jié)果(自適應(yīng))极舔,但也很多人用不好凤覆,因此其實(shí)這是一種模糊查找方式,而很多人經(jīng)常忽略一個(gè)前提:就是查找區(qū)域的第一列必須是按升序排列拆魏。
- 而矢量形式有三個(gè)參數(shù)盯桦,其實(shí)就是借助了一個(gè)中間過程,找到對(duì)應(yīng)的位置渤刃,再從結(jié)果列中返回相同位置的值拥峦。
而我們這里用的正好是LOOKUP矢量形式的特性,其語法結(jié)構(gòu)如下:
我們回頭看看通式里卖子,為什么有1略号、有0?而且有時(shí)候看到提LOOKUP(2, 1/()...)洋闽,究竟這些0玄柠、1、2
是什么意思诫舅,我能不能用別的呢羽利?
我們先來了解使用LOOKUP查找必須掌握的一個(gè)前提條件,如上圖的劃線內(nèi)容:
- 第二參數(shù)的值必須是按升序排列的刊懈;
- Lookup會(huì)返回小于或者等于查找值(第一參數(shù))的最大值的(最后一個(gè))值这弧;
- 查找值如果小于第二參數(shù)的最小值娃闲,返回#N/A錯(cuò)誤。
拿個(gè)實(shí)例來說說:
這個(gè)引用數(shù)值的條件查找当宴,其實(shí)用SUMPRODUCT也可以實(shí)現(xiàn)畜吊,用SUMIFS就更簡(jiǎn)潔,不過這里只是示例户矢,大家將就著使用,權(quán)為理解公式的含義殉疼,我們?cè)谶@示例中使用的公式為:
=LOOKUP(1,0/((A$7:A$13=F9)*(B$7:B$13=G9)),C$7:C$13)
第二參數(shù)分解的步驟如下:
- 條件匹配結(jié)果: (A$7:A$13=F9)*(B$7:B$13=G9)
{TRUE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE} * {FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE}
- 雙條件匹配計(jì)算結(jié)果:((A$7:A$13=F9)*(B$7:B$13=G9))
{0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0}
- 以0為被除數(shù)的計(jì)算結(jié)果:0/((A$7:A$13=F9)*(B$7:B$13=G9))
{#DIV/0! ; #DIV/0! ; #DIV/0! ; 0 ; #DIV/0! ; #DIV/0! ; #DIV/0!}
從上面我們也可以看到梯浪,其實(shí)第二參數(shù)的括號(hào)挺多的,很多初學(xué)者就是理不清這些括號(hào)要怎么放置瓢娜,經(jīng)常寫錯(cuò)公式挂洛,所以要多注意并學(xué)會(huì)括號(hào)的配對(duì)方式,很多條件查找都是需要括號(hào)配對(duì)的眠砾,如SUMPRODUCT也同樣虏劲。
由于我們用的是0除以條件匹配結(jié)果,所以得到一個(gè)只有#DIV/0!錯(cuò)誤值和0的數(shù)組褒颈,由于LOOKUP能在第二參數(shù)中忽略與查找值非同性質(zhì)的數(shù)據(jù)類型柒巫,也就是剔除了#DIV/0!錯(cuò)誤值,那么最的我們只剩下0谷丸,因此堡掏,上面講到的三個(gè)條件,我們都滿足了刨疼。
因此泉唁,我們還可以用1除以條件匹配結(jié)果,那么就能得到以#DIV/0!和1的數(shù)組揩慕,同樣是滿足三大前提的亭畜。
好了,到此為止就介紹了LOOKUP的精確查找方式迎卤,公式的形式是固定的拴鸵,根據(jù)上面的“**通式
**”,將你的條件全部寫在綠色括號(hào)內(nèi)止吐,各個(gè)子條件使用 ***** 號(hào)連接宝踪,就可以萬無一失了,條件的寫法跟SUMPRODUCT的多條件求和碍扔、計(jì)數(shù)是相同的瘩燥。
當(dāng)然如果你多條件對(duì)應(yīng)的結(jié)果有多條,返回的會(huì)是最后一條不同,這也可以作為一個(gè)特殊屬性厉膀,跟VLOOKUP或者M(jìn)ATCH只返回第一條記錄相互補(bǔ)溶耘。
那么,還有什么更復(fù)雜服鹅,是LOOKUP能人所不能的呢凳兵?
當(dāng)然,只是LOOKUP可以輕松解決而已企软,函數(shù)只要會(huì)構(gòu)造庐扫,就沒有“不能”的,請(qǐng)看下例:
就是根據(jù)A列的地址仗哨,匹配出對(duì)應(yīng)的地區(qū)名稱形庭,如果是你,會(huì)有什么樣的思路呢厌漂?
當(dāng)我們學(xué)習(xí)了LOOKUP之后萨醒,這個(gè)問題就變得相當(dāng)容易了,只需要用FIND構(gòu)造一個(gè)數(shù)組用法苇倡,然后就能得到結(jié)果了……
=LOOKUP(1,0/FIND($D$3:$D$32,A2),D$3:D$32)
這種LOOKUP(1,0/ 配合FIND或者COUNTIF富纸,就可以輕松應(yīng)對(duì)“簡(jiǎn)稱”或者模糊匹配的難題。
詳細(xì)就不多作解釋了旨椒,畢竟分解開來晓褪,都是一樣的道理,只是這種情況下的FIND和COUNTIF钩乍,使用的是數(shù)組計(jì)算形式辞州。
**Excel難題需要有償處理的,請(qǐng)?jiān)L問:
**
http://excelstudio.taobao.com