Excel數組公式從入門到精通之精通篇

        上次寫了篇《 Excel數組公式從入門到精通之入門篇》,不覺已十多天過去了,今天補上「精通篇」。固然說「精通」可能有點過了,可是但願你們經過這兩篇博文可以真正認識「數組公式」,而且在工做中使用數組公式幫咱們解決實際問題。
Excel數組公式從入門到精通之精通篇
        1、課程回憶
        什麼是數組公式呢?顧名思義就是公式中包含數組的了,詳細含義請參看前文。但這裏重點提醒的一點就是,若是要使用數組公式, 在編輯欄輸入完公式之後必定要按下「Ctrl+Shift+Enter」組合鍵,使編輯欄的公式處在「{}」之中。
        2、數組公式繼續深刻
        印象中是好幾年前了,當時看過的一篇掃盲貼中,做者舉的例子真是太實用了。具體細節記不太清楚了,大體意思就是使用函數計算1到100的和。這裏一樣以此爲例。
        1.求1到100的和
        在往下看以前,你們想一下,若是讓你來處理該如何來處理呢?只用一個函數解決1到100的和,固然也能夠是1000、10000甚至更多。討論具體的數值沒有太大意義,此處只是但願經過此例讓你們更進一步的瞭解數組公式的用法。
        解答:{=SUM(ROW(1:100))}
        問題分析:求1到100的和,答案是5050(小學生都知道^-^),但Excel必須是你告訴了它正確的方法,它才能知道。計算從1到100的和,實際上就是計算1+2+3+4+……+98+99+100,好了,答案出來了,在編輯欄中輸入「=sum(1+2+3+4+……+98+99+100)」。相信聰明的必定對此答案不滿意,雖然能獲得正確的結果,但很明顯是「錯誤」的方法。
        要獲得1到100的正確數列,最簡單的方法就是使用Row()或是Column()函數,因爲我的習慣,我比較習慣於Row(),因此這裏以Row()函數爲例。
       熟悉Row()函數:在A1單元格中輸入「=Row()」,使用填充柄填充至A5,看到什麼結果?是否是每個單元格中值就是其對應的行數。
        驚喜:Row()表示單前行,若是使用Row(1:100)就表示一個數組,其中包含的即是第一到第一百行的行號,即一、二、三、……、9八、9九、100這些數值,如今咱們就把這個數組應用到公式中。
        在工做表的任意一個單元格中輸入「=sum(Row(1:100))」,而後按Ctrl+Shift+Enter組合鍵,你會驚喜的發現,咱們要的結果出現了。
        2.在Excel2003中享受「SUMIFS」
        SUMIF函數應該不少人都用過,很是好用。但若是遇到多條件判斷的怎麼辦呢?從Office 2007開始,引入了SUMIFS函數,能夠解決這種多條件求和問題。但若是仍然使用Office 2003怎麼辦呢?其實使用SUM、IF再結合數組公式便可實現SUMIFS的效果。
        以下圖所示,某教師有一張任教的幾個班級的學生成績表。
        任務:統計出「一班」、「二班」共計多少人?
        此題要如何解決?SUMIF用兩次?或是COUNT用兩次?這裏仍是演示數組公式的用法,因此先用SUM和IF組合的形式。
        在任一單元格中輸入「=SUM(IF((A2:A12="一班")+(A2:A12="二班"),1,0))」公式按下回車鍵,是否是發現結果是「#VALUE!」,再次進入編輯欄而後按下「Ctrl+Shift+Enter」快捷鍵,是否是發現正確的結果出來了?
        這裏再次解釋一下這個公式「{=SUM(IF((A2:A12="一班")+(A2:A12="二班"),1,0))}」,外側SUM沒什麼好用的了,就是求()內各數的和。中間的「IF((A2:A12="一班")+(A2:A12="二班"),1,0))」的運算過程是這樣的,判斷A2:A12區域內單元格的值是不是「一班」,若是是則結果爲1,則此公式計算的結果依次是「一、0、0、一、0、0、一、0、0、一、0」,由於第一個條件爲真,第二個條件確定就不爲真了,由於一個單元格不可能同時等於「一班」和「二班」,因此第一個數組就是「一、0、0、一、0、0、一、0、0、一、0」。這時再判斷A2:A12區域內單元格的值是不是「二班」,若是是結果則爲1,不然爲0,因此這個數組條件計算的結果就是「0、一、0、0、0、一、0、一、0、0、0」,中間的加號就是將這兩個數組相加,也就是說最終的數組爲「一、一、0、一、0、一、一、一、0、一、0」,而後使用SUM求和,結果就爲7了。
        從上面的圖中標註能夠看出,因此的公式我所有使用了數組(A2:A12這就是一個數組),而且上圖上的沒有使用數組公式的公式中的數組所有可使用單個單元格替代,之因此所有列出,仍是但願你們更好的理解一下數組。
        在Excel中,數組若是不放在數組公式中使用,一般數組在特定單元格中只表明與其特定單元格所對應的一個值(數組中的一個元素),放在數組公式中使用時,一般整個數組元素都會參與運算。
        3、 數組公式精通
        這裏是一個實際工做中的例子,只是我稍微變化了一下,仍是SUM應用的例子。
        需求:以下圖所示,如今要統計員工張三在1號加工全部機器的「實績」,也就是說在右側的數據中先過濾日期爲1,而後再過濾人員爲張三的數據,最後統計實績的結果。若是使用一個公式完成這一需求,你能想到嗎?固然SUMIFS是除外的,由於SUMIFS是Office 2007之後的產物。
        答案:在上圖所示的C2單元格中輸入「=SUM((E2:E21=A2)*(G2:G21=B2)*(H2:H21))」公式,而後按下「Ctrl+Shift+Enter」組合鍵,你會發現想要的結果已經出現了。數組公式就是這麼簡單,解決問題也是這麼簡單。
        此次用的公式能夠看出,比以前用的公式還要簡單,連IF都不要了,實際上這裏的「=」符號就是起到了一個相似IF的效果。
        這裏再說明一下公式的執行過程,公式中E2:E21表示數組區域,這個相信已經不須要再說明了,放到數組公式中就是依次取數組中的各個數值,也就是依次取日期中的值。E2:E21=A2,實際上就是拿日期中的每個值依次與A2中的日期進行比對,若是相等則結果爲True,即1,若是不相等則爲False即爲0。到了這裏也許你有一點明白了,若是第一不相等,則後面的無需再繼續下去了,由於公式裏用的所有是「*」乘積符號,任何數乘0等於0。若是此項符合再繼續判斷G2:G21區域,也就是用姓名依次比對,若是和B2中的姓名相同,則爲Ture,即1,若是爲False,即0,繼續下一個回合。若是此項也爲Ture,很明顯前面兩項的結果爲1*1=1,再乘以H2:H21數組中對應的數字,即符合條件的「實績」,以第一個符合條件的第一條記錄爲例,在數組公式運行的第一個回合爲SUM(1*1*234),結果固然爲234了,而後再依次完成整個數組的運算,咱們最終的目的就達到了。
 
        數組公式很是有用,效率也高,但真正的理解、熟練掌握也不是一件很容易的事。但你們記住 數組中的數據是一一對應的,放到數組公式中使用時,數組中的數據會按順序依次參與相應的運算。
        但願你們可以慢慢的理解、貫通。
相關文章
相關標籤/搜索