在EXCEL里面有多個方法可以完成多條件查詢,先來了解合并數組這個概念:
如果Sheet2是這樣的:
A ,B ,C
張三,一月,90
張三,二月,85
張三,三月,95
那么If({1,0},Sheet2!A1:A3&Sheet2!B1:B3,Sheet2!C1:C3)就是:
張三一月,90
張三二月,85
張三三月,95
也可以用Choosen({1,2},Sheet2!A1:A3&Sheet2!B1:B3,Sheet2!C1:C3),結果相同。現在就可以用vlookup來進行多條件查詢了:
{=vlookup(A1&B1,If({1,0},Sheet2!A1:A3&Sheet2!B1:B3,Sheet2!C1:C3),2,false)}
還可以用sum函數直線多條件合計功能:
{=sum((Sheet2!A1:A3=A1)*(Sheet2!B1:B3=B1)*Sheet2!C1:C3)}
這個功能也很有意思,另外還可以用index+match來解決,有一個值得一提的小技巧是,對于長的公式需要同時按Ctrl+Shift+Enter來給單元內容加上{}
在理解上述公式之前需要理解if({1,0},......)公式的含義,見下:
IF({1,0},……)公式的解釋
把它分解為一塊一塊,把相關的知識一一弄明白,合起來一定能明白。
1、IF(條件,返回值1,返回值2)
首先你要弄懂這個函數,如果條件為真,函數的結果為“返回值1”,如果條件為假,函數的結果是“返回值2”:
if(true,10,100)=10
if(1,"A","B")="A"
if(false,20,30)=30
if(0,"你","我")="我"
2、{1,2,3,4}是一個數組,一個數組能存儲多個數值,數組的表示方式是{}。
{1,0}是個水平數組,它有兩個值,一個是1,另一個是0。
{"張三","李四","王五"}也是一個水平數組,它有三個值。
3、連接符&也是這個公式中的一個知識點。
"A" & "B" & "C"="ABC"
"Aaa"&"Bcd"&"123"="AaaBcd123"
字符串可以連接,數組也可以連接:
{1,2,3}&{"A","B","C"}={"1A","2B","3C"}
單元格區域也可以連接:
假如A1:A10的數據為1到10,B1:B10的數據為a到j。
A1:A10&B1:B10的結果就是
1a
2b
3c
...
10j
再看個實際點的例子:

4、再回過來說IF()函數
當條件是一個單變量時,總代表true和false,即“真”和“假”,它總是返回兩個值當中的一個。
但是
但是,當條件不是單變量,而是一個數組時,當條件為{1,0}時,結果如何呢?
記住,返回的結果與條件一樣,是個數組,而且,與條件數組的列數相同。
課堂上,老師說:同學們好,我們來做個游戲,當老師舉起左手的時候,你說“語文”,當老師舉起右手的時候,你說100,清楚了沒有?同學們都說清楚了,于是:
老師舉起左手,一同學回答“語文”:If(左手,"語文",100)="語文"
老師的話隱含了一層意思,左手為真,右手為假,左手為1,右手為0:If(1,"語文",100)="語文"
接下去的游戲自然還有:If(右手,"語文",100)=100
即 If(0,"語文",100)=100
輪到第三個同學了,老師把兩只手都舉了起來,那么這同學怎么回答?
也許這位同學會說“老師,你有病?”當然,我更希望這位同學能回答:“語文”,100。
不是么:IF({左手,右手},"語文",100)={"語文",100}
前面提過,左手是真,右手是假,寫標準點,就是:
IF({true,false},"語文",100)={"語文",100}
也是:IF({1,0},"語文",100)={"語文",100}
你糊涂了嗎?
沒有?
沒有就好。別鉆牛角尖,這個比方打得可能不太合適。
接著,老師還會把游戲繼續做下去,再把規則改一改:老師舉左手的時候,回答科目,舉右手的時候,回答成績。
老師舉起左手,同學D回答:語文、數學、英語、計算機
老師舉起右手,同學E回答:100、90、95、80
這時,老師把左右手都舉了起來,老師說,如果懂了,請正確說出結果。
于是,有同學回答:"語文",100;"數學",90;"英語",95;"計算機",80
老師滿意極了。
用我們熟悉的方式表現出來,就是:
=IF({1,0},科目,成績)={"語文",100;"數學",90;"英語",95;"計算機",80} |
|