海上月明

          editer by sun
          posts - 162, comments - 51, trackbacks - 0, articles - 8
             :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

          [轉]EXCEL中的多條件查詢(整理)

          Posted on 2011-03-29 18:48 pts 閱讀(2713) 評論(0)  編輯  收藏 所屬分類: Office
          EXCEL中的多條件查詢(整理)from:http://hi.baidu.com/binaryfan/blog/item/54dbf7099971cdc63ac7635f.html
          2009-08-17 21:32

          在EXCEL里面有多個方法可以完成多條件查詢,先來了解合并數組這個概念:

          如果Sheet2是這樣的:

          ,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}
          主站蜘蛛池模板: 榆林市| 大冶市| 桦川县| 顺义区| 锦屏县| 黄冈市| 冕宁县| 玉田县| 应城市| 青冈县| 杭锦后旗| 临潭县| 江口县| 柘荣县| 大足县| 合水县| 理塘县| 武山县| 松滋市| 遵化市| 古浪县| 郓城县| 汽车| 天门市| 清水河县| 随州市| 富川| 临安市| 紫金县| 鄂托克前旗| 资中县| 蚌埠市| 青岛市| 沾益县| 宜君县| 札达县| 巴南区| 博罗县| 安福县| 长岛县| 高邮市|