LOOKUP在Excel中的復(fù)雜條件查找

轉(zhuǎn)自:EluneXY的新浪博客:http://blog.sina.com.cn/s/blog_9b8b66380101gfbz.html

前面講了VLOOKUP的基本用法,以及衍生用法,但比如說多條件查找,要動用數(shù)據(jù)區(qū)域的串接匹配,牽扯到的數(shù)據(jù)運算量實在太大了,很不利于工作表的計算,也不方便書寫,今天我們著重講一個多條件查找或者復(fù)雜條件查找的通式——LOOKUP。

=LOOKUP(1,0/((區(qū)域1=條件1)*(區(qū)域2=條件2)*(….)),目標(biāo)區(qū)域)

可能似曾相識吧?可能還有寫成=LOOKUP(2,1/().....
這個可是很多前輩高人都津津樂道的公式哦,基本上屬于“萬金油”,快無所不能了,重點還在于她能人所不能……

我們先了解一下LOOKUP函數(shù)的基本語法,LOOKUP比較特殊,有矢量形式數(shù)組形式

  • 數(shù)組形式很簡單,只有兩個參數(shù),就是從第二參數(shù)的數(shù)組區(qū)域里,根據(jù)查找值返回最后一列或者一行對應(yīng)的結(jié)果(自適應(yīng)),但也很多人用不好,因此其實這是一種模糊查找方式,而很多人經(jīng)常忽略一個前提:就是查找區(qū)域的第一列必須是按升序排列。
  • 矢量形式有三個參數(shù),其實就是借助了一個中間過程,找到對應(yīng)的位置,再從結(jié)果列中返回相同位置的值。

而我們這里用的正好是LOOKUP矢量形式的特性,其語法結(jié)構(gòu)如下:


LOOKUP語法結(jié)構(gòu)

我們回頭看看通式里,為什么有1、有0?而且有時候看到提LOOKUP(2, 1/()...),究竟這些0、1、2
是什么意思,我能不能用別的呢?

我們先來了解使用LOOKUP查找必須掌握的一個前提條件,如上圖的劃線內(nèi)容:

  1. 第二參數(shù)的值必須是按升序排列的;
  2. Lookup會返回小于或者等于查找值(第一參數(shù))的最大值的(最后一個)值;
  3. 查找值如果小于第二參數(shù)的最小值,返回#N/A錯誤。

拿個實例來說說:


實例

這個引用數(shù)值的條件查找,其實用SUMPRODUCT也可以實現(xiàn),用SUMIFS就更簡潔,不過這里只是示例,大家將就著使用,權(quán)為理解公式的含義,我們在這示例中使用的公式為:

=LOOKUP(1,0/((A$7:A$13=F9)*(B$7:B$13=G9)),C$7:C$13)

第二參數(shù)分解的步驟如下:

  1. 條件匹配結(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}

  1. 雙條件匹配計算結(jié)果:((A$7:A$13=F9)*(B$7:B$13=G9))

{0 ; 0 ; 0 ; 1 ; 0 ; 0 ; 0}

  1. 以0為被除數(shù)的計算結(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ù)的括號挺多的,很多初學(xué)者就是理不清這些括號要怎么放置,經(jīng)常寫錯公式,所以要多注意并學(xué)會括號的配對方式,很多條件查找都是需要括號配對的,如SUMPRODUCT也同樣。

由于我們用的是0除以條件匹配結(jié)果,所以得到一個只有#DIV/0!錯誤值和0的數(shù)組,由于LOOKUP能在第二參數(shù)中忽略與查找值非同性質(zhì)的數(shù)據(jù)類型,也就是剔除了#DIV/0!錯誤值,那么最的我們只剩下0,因此,上面講到的三個條件,我們都滿足了。

因此,我們還可以用1除以條件匹配結(jié)果,那么就能得到以#DIV/0!和1的數(shù)組,同樣是滿足三大前提的。

好了,到此為止就介紹了LOOKUP的精確查找方式,公式的形式是固定的,根據(jù)上面的“**通式
**”,將你的條件全部寫在綠色括號內(nèi),各個子條件使用 ***** 號連接,就可以萬無一失了,條件的寫法跟SUMPRODUCT的多條件求和、計數(shù)是相同的。

當(dāng)然如果你多條件對應(yīng)的結(jié)果有多條,返回的會是最后一條,這也可以作為一個特殊屬性,跟VLOOKUP或者M(jìn)ATCH只返回第一條記錄相互補。

那么,還有什么更復(fù)雜,是LOOKUP能人所不能的呢?
當(dāng)然,只是LOOKUP可以輕松解決而已,函數(shù)只要會構(gòu)造,就沒有“不能”的,請看下例:


FIND實例

就是根據(jù)A列的地址,匹配出對應(yīng)的地區(qū)名稱,如果是你,會有什么樣的思路呢?

當(dāng)我們學(xué)習(xí)了LOOKUP之后,這個問題就變得相當(dāng)容易了,只需要用FIND構(gòu)造一個數(shù)組用法,然后就能得到結(jié)果了……

=LOOKUP(1,0/FIND($D$3:$D$32,A2),D$3:D$32)

這種LOOKUP(1,0/ 配合FIND或者COUNTIF,就可以輕松應(yīng)對“簡稱”或者模糊匹配的難題。

詳細(xì)就不多作解釋了,畢竟分解開來,都是一樣的道理,只是這種情況下的FIND和COUNTIF,使用的是數(shù)組計算形式

**Excel難題需要有償處理的,請訪問:
**
http://excelstudio.taobao.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容