多工作表動態累計求和【Excel分享】

多工作表動態累計求和

大家好,今天和大家分享「多工作表動態累計求和",對於跨工作表求和對於初級學員,新手來說是一個棘手的問題,跨工作簿就更不說了,中級用戶也搞不定,因為跨工作簿要用到vba和透視里的SQL這些知識,也許你會說,這些我都沒有聽過,說明你的學習Excel路還很長,如果你天天要和Excel打交道2個小時以上的朋友,建議好好學學Excel

一、這問朋友的提問

A列公式中的求和怎麼根據B1單元格月份的變動來求相應的累計值?

如:B2=2月,A列求的累計值是1月:2月這工作表之間的合計值;B2=5月時,A列求的累計值是1月:5月這工作表之間的合計值,具體效果看下面的動畫

二、方法1:用計算器相加

這種方法,來讀今天這篇文章的肯定沒有了,但是現實生活中真有這樣的人,他不知Excel這個電子表格可以計算,他一這打開Excel,一邊用手指敲著計算器。

三、方法2:用公式一個一個引用各個工作表

這一類朋友可以占的比例就多了,輸入一個等號,然後一個一個工作表去引用

1、公式截圖

2、公式

="1月"!A1 "2月"!A1 "3月"!A1 "4月"!A:A "5月"!A1

3、公式解釋

  • 如果單純是這樣求和,這樣做也是可以的,但是如果再什麼條件用這種方法就沒有辦法實現了

  • 這種方法,當然也實現不了動態,也就是不能根據B1單元格值而改變求和的工作表數目,只能手動重新修改一個公式,再填充公式,它的缺點顯而易見。

  • 四、方法3:N降維實現

    1、公式截圖

    2、公式

    =SUM(N(INDIRECT(ROW(INDIRECT("1:"&SUBSTITUTE($B$1,"月","")))&"月!A"&ROW(A1))))

    3、公式解釋

  • 這是數組公式,把公式輸入之好,游標定位到編輯欄里,然後三鍵一齊下Ctrl Shift 回車

  • INDIRECT("1:"&SUBSTITUTE($B$1,"月",""))把月替換掉得到月份的數字這樣和到文本「1:5",我們在它外面嵌套一個indirect函數就變成了1到5行的單元格區域,記得是1到5行的單元格區域,得到是單元格區域,重要的事我說三遍了。我們在它外面再嵌套一個row函數,得到1到5行的的行號:1;2;3;4;5

  • ROW(INDIRECT("1:"&SUBSTITUTE($B$1,"月","")))&"月!A"&ROW(A1)這個返回的是{"1月!A1";"2月!A1";"3月!A1";"4月!A1";"5月!A1"},得到每個工作表的A1單元格文本,記得是文本字元串,只有再給它嵌套一個indirect函數,才會變成每個工作表的A1單元格,這個是動態的,下拉A1會變成A2,得到公式INDIRECT(ROW(INDIRECT("1:"&SUBSTITUTE($B$1,"月","")))&"月!A"&ROW(A1))

  • 為什麼要在indirect函數前面加N函數呢?,因為indirect函數這裡構建了多維,所以要通過N函數來降維

  • 最後用sum函數求和得到我們想要結果

  • 五、方法4:Sumif降維實現

    1、公式截圖

    2、公式

    =SUM(SUMIF((INDIRECT(ROW(INDIRECT("1:"&SUBSTITUTE($B$1,"月","")))&"月!A"&ROW(A1))),"<>0"))

    3、公式解釋

  • 大部分和第3種解法差不多,也是數組公式

  • sumif這裡也是起到一個降維作用,相當於N函數

  • sumif函數第1參數:條件所在的區域是(INDIRECT(ROW(INDIRECT("1:"&SUBSTITUTE($B$1,"月","")))&"月!A"&ROW(A1)))得到單元格區域

  • sumif函數第2參數:條件是不"<>0",因為我們這裡是求和,這樣設置和條件,不管它是負數,還是正數都可以

  • sumif函數第3參數和第1參數如果是一樣的,第3參數可以不寫。

  • 六、小結

    前面2種方法不可取,後面2種方法才體現Excel函數博大精深,這話一點也不假,當然,如果你確實不會函數,那也只能用前面2種方法,當然兩者之間辦事效率就不用我說了


    推薦閱讀:

    Oh,NO!你竟以為Excel求和函數只有SUM?
    用Excel畫思維導圖不好看?教你一招新技能!
    Excel揭秘11:強大而美妙的數組公式
    第四章 Excel
    Excel篩選那些讓人很頭痛的問題詳解

    TAG:工作 | 分享 | 動態 | Excel |