close

368

SUMIF的高級用法:跨多工作表依條件求和

示範檔

範例檔

368.XLSX

結果檔

SUMIF函數是條件式求和函數,一般我們只是用於單工作表求和,今天本單元就來學習一下SUMIF函數的高級用法,跨多工作表依條件求和。

n  工作表名規則(序號+字元)

如下圖所示,有1~33個欄相同、列數不同的明細表,要求到第一季工作表匯總出每個產品的銷量之和。

月銷售量表:

image

 

1季匯總表

image

 

分析:

如果只有一個表,我們只需要用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"))

image

 

而上述的公式傳回的每個工作表的求和結果,都是一組數值,最後還需要用SUMRPODUCT函數進行求總和,即:

=SUMPRODUCT(SUMIF(INDIRECT(ROW($1:$3) &"!B:B"),A2,INDIRECT(ROW($1:$3)& "!C:C")))

image

 

n  工作表名稱不規則

工作表名稱常常是不規則的,如下圖所示

image

 

首先我們需要用巨集表函數取得工作表名稱:

點取「公式 > 己定義之名稱 > 名稱管理員」指令。

在「名稱管理員」對話方塊,點取「新增」鈕

在「新名稱」對話方塊,點取「名稱」欄位,輸入中輸入名稱「SH」,然後點取「參照到」欄位中輸入公式:「=MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,99)&T(NOW())

image

 

公式說明:

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欄,以免造成迴圈參照。

image

 

 


arrow
arrow
    創作者介紹

    錦子老師 發表在 痞客邦 留言(0) 人氣()