368 |
SUMIF的高級用法:跨多工作表依條件求和 |
||||
示範檔 |
無 |
範例檔 |
368.XLSX |
結果檔 |
無 |
SUMIF函數是條件式求和函數,一般我們只是用於單工作表求和,今天本單元就來學習一下SUMIF函數的高級用法,跨多工作表依條件求和。
n 工作表名規則(序號+字元)
如下圖所示,有1月~3月3個欄相同、列數不同的明細表,要求到第一季工作表匯總出每個產品的銷量之和。
月銷售量表:
第1季匯總表
分析:
如果只有一個表,我們只需要用SUMIF函數直接求和:
=SUMIF('1日'!B:B,合計!A2,'1日'!C:C)
對於多個表,除了用SUMIF() + SUMIF + SUMIF()...外,SUMIF函數支援多工作表同時求和,但必須用INDIRECT函數生成對多個工作表的參照,即:
INDIRECT(ROW($1:$5)&"日!B:B")
和
INDIRECT(ROW($1:$5)&"日!C:C")
(若對INDIRECT函數不熟可以查看其用法)
用SUMIF組合起來,即:
=SUMIF(INDIRECT(ROW($1:$5)&"日!B:B"),A2,INDIRECT(ROW($1:$5)&"日!C:C"))
而上述的公式傳回的每個工作表的求和結果,都是一組數值,最後還需要用SUMRPODUCT函數進行求總和,即:
=SUMPRODUCT(SUMIF(INDIRECT(ROW($1:$3) &"月!B:B"),A2,INDIRECT(ROW($1:$3)& "月!C:C")))
n 工作表名稱不規則
工作表名稱常常是不規則的,如下圖所示
首先我們需要用巨集表函數取得工作表名稱:
點取「公式 > 己定義之名稱 > 名稱管理員」指令。
在「名稱管理員」對話方塊,點取「新增」鈕
在「新名稱」對話方塊,點取「名稱」欄位,輸入中輸入名稱「SH」,然後點取「參照到」欄位中輸入公式:「=MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,99)&T(NOW())」
公式說明:
GET.WORKBOOK(1)是巨集表函數,當參數是1時,可以獲取當前活頁簿中所有工作表名稱,由於名稱中帶有活頁簿名稱,所以用FIND + MID截取只含工作表名稱的字串。&T(now())的作用是讓公式自動更新。
然後,我們就可以在公式中用「SH&"!」替換原來的「ROW($1:$5)&"日!」。
最終公式為:
=SUMPRODUCT((SUMIF(INDIRECT(SH&"!B:B"),D2,INDIRECT(SH&"!C:C"))))
由於SH取得的名稱中包括「合計」,所以匯總表在製作時,要避開B欄和C欄,以免造成迴圈參照。
留言列表