1. 程式人生 > >通過IF({1,0}和VLOOKUP函式實現Excel的雙條件多條件查詢

通過IF({1,0}和VLOOKUP函式實現Excel的雙條件多條件查詢

在Excel中,通過VLOOKUP函式可以查詢到資料並返回資料。不僅能跨表查詢,同時,更能跨工作薄查詢。

  但是,VLOOKUP函式一般情況下,只能實現單條件查詢。

  如果想通過VLOOKUP函式來實現雙條件或多條件的查詢並返回值,那麼,只需要加上IF({1,0}就可以實現。

  下面,我們就一起來看看IF({1,0}和VLOOKUP函式的經典結合使用例子吧。

  我們要實現的功能是,根據Sheet1中的產品型別和頭數,找到Sheet2中相對應的產品型別和頭數,並獲取對應的價格,然後自動填充到Sheet1的C列。實現此功能,就涉及到兩個條件了,兩個條件都必須同時滿足。

  如下圖,是Sheet1表的資料,三列分別存放的是產品型別、頭數和價格。

  上圖是一張購買產品的表,其中,購買產品的行資料,可能存在重複。如上圖的10頭三七,就是重複資料。

  現在,我們再來看第二張表Sheet2。

  上表,是固定好的不存在任何重複資料的產品單價表。因為每種三七頭對應的頭數是不相同的,如果要找三七頭的單價,那麼,要求型別是三七頭,同時還要對應於頭數,這就是條件。

  現在,我們在Sheet1中的A列輸入三七頭,在B列輸入頭數,然後,利用公式自動從Sheet2中獲取相對應的價格。這樣就免去了輸入的麻煩。

  公式比較複雜,因為難於理解,先看下圖吧,是公式的應用例項。

  下面,將給大家大體介紹公式是如何理解的。比如C2的公式為:

  {=VLOOKUP(A2&B2

,IF({1,0},Sheet2!$A$2:$A$12&Sheet2!$B$2:$B$12,Sheet2!$C$2:$C$12),2,FALSE)}

  請注意,如上的公式是陣列公式,輸入的方法是,先輸入

  =VLOOKUP(A2&B2,IF({1,0},Sheet2!$A$2:$A$12&Sheet2!$B$2:$B$12,Sheet2!$C$2:$C$12),2,FALSE) 之後,再按新Ctrl+Shift+Enter組合鍵,才會出現大括號。大括號是通過組合鍵按出的,不是通過鍵盤輸入的。

  公式解釋:

  ①VLOOKUP的解釋

  VLOOKUP函式,使用中文描述語法,可以這樣來理解。

  VLOOKUP(查詢值,在哪裡找,找到了返回第幾列的資料,邏輯值),其中,邏輯值為True或False。

  再對比如上的公式,我們不能發現。

  A2&B2相當於要查詢的值。等同於A2和B2兩個內容連線起來所構成的結果。所以為A2&B2,理解為A2合上B2的意思。

  IF({1,0},Sheet2!$A$2:$A$12&Sheet2!$B$2:$B$12,Sheet2!$C$2:$C$12)相當於要查詢的資料

  2代表返回第二列的資料。最後一個是False。

  ②IF({1,0}的解釋

  剛才我們說了,IF({1,0},Sheet2!$A$2:$A$12&Sheet2!$B$2:$B$12,Sheet2!$C$2:$C$12)相當於VLOOKUP函式中的查詢資料的範圍。

  由於本例子的功能是,根據Sheet1中的A列資料和B列資料,兩個條件,去Sheet2中查詢首先找到對應的AB兩列的資料,如果一致,就返回C列的單價。

  因此,資料查詢範圍也必須是Sheet2中的AB兩列,這樣才能被找到,由於查詢資料的條件是A2&B2兩個單元格的內容,但是此二單元格又是獨立的,因此,要想構造查詢範圍,也必須把Sheet2中的AB兩列結合起來,那就構成了Sheet2!$A$2:$A$12&Sheet2!$B$2:$B$12;

  Sheet2!$A$2:$A$12&Sheet2!$B$2:$B$12:相當於AB兩列資料組成一列資料。

  那麼,前面的IF({1,0}代表什麼意思呢?

  IF({1,0},相當於IF({True,False},用來構造查詢範圍的資料的。最後的Sheet2!$C$2:$C$12也是資料範圍。

  現在,整個IF({1,0},Sheet2!$A$2:$A$12&Sheet2!$B$2:$B$12,Sheet2!$C$2:$C$12)區域,就形成了一個數組,裡面存放兩列資料。

  第一列是Sheet2AB兩列資料的結合,第二列資料是Sheet2!$C$2:$C$12。

  公式{=VLOOKUP(A2&B2,IF({1,0},Sheet2!$A$2:$A$12&Sheet2!$B$2:$B$12,Sheet2!$C$2:$C$12),2,FALSE)}中的數字2,代表的是返回資料區域中的第二列資料。結果剛好就是Sheet2的C列,即第三列。因為在IF({1,0}公式中,Sheet2中的AB兩列,已經被合併成為一列了,所以,Sheet2中的第三列C列,自然就成為序列2的列編號了,所以,完整的公式中,紅色的2代表的就是要返回第幾列的資料。

  上面的完整的公式,我們可以使用如下兩種公式來替代:

  =VLOOKUP(A2&B2,CHOOSE({1,2},Sheet2!$A$2:$A$12&Sheet2!$B$2:$B$12,Sheet2!$C$2:$C$12),2,FALSE)

  =VLOOKUP(A2&B2,IF({TRUE,FALSE},Sheet2!$A$2:$A$12&Sheet2!$B$2:$B$12,Sheet2!$C$2:$C$12),2,FALSE)