在 Excel 裡有一個日期清單,其中包含金額的數列,如何計算各個星期幾的平均和上班日及假日的平均?

以下提供二種不同的公式來處理。

選取儲存格A3:C31,按 Ctrl+Shift+F3 鍵,勾選「列端列」,定義名稱:日期、星期、金額。

SUMPRODUCT函數】

Excel-計算星期幾的平均

1. 各星期幾的平均

儲存格F4:=SUMPRODUCT((WEEKDAY(日期,2)=ROW(A1))*金額)/SUMPRODUCT((WEEKDAY(日期,2)=ROW(A1))*1)

複製儲存格F4,貼至儲存格F4:F10。

(1) SUMPRODUCT((WEEKDAY(日期,2)=ROW(A1))*金額)

利用 WEEKDAY 函數設定參數2,讓傳回值1~7對應星期一~星期日。

Excel-計算星期幾的平均

當公式向下複製時,ROW(A1)=1→ROW(A2)=2→ROW(A3)=3→…。

本式可計算所有日期是星期一者的金額總和。

(2) SUMPRODUCT((WEEKDAY(日期,2)=ROW(A1))*1)

本式可計算所有日期是星期一者的「個數」。

因為條件 WEEKDAY(日期,2)=ROW(A1) 會傳回 TRUE/FALSE 陣列,經過「*1」運算後,可以轉換為 1/0 的陣列。

(3) 二者相除即為平均

2. 上班日的平均

儲存格F14:=SUMPRODUCT((WEEKDAY(日期,2)<6)*金額)/SUMPRODUCT((WEEKDAY(日期,2)<6)*1)

(1) SUMPRODUCT((WEEKDAY(日期,2)<6)*金額)

利用 WEEKDAY 函數設定參數2,傳回值1~5對應星期一~星期五為上班日。

本式可計算所有日期是星期一~星期五者的金額總和。

(2) SUMPRODUCT((WEEKDAY(日期,2)<6)*1)

條件判斷會傳回 TRUE/FALSE 陣列,經過「*1」運算後,可以轉換為 1/0 的陣列。

本式可計算所有日期是星期一~星期五者的個數。

(3) 二者相除即為平均

3. 假日的平均

儲存格F15:=SUMPRODUCT((WEEKDAY(日期,2)>5)*金額)/SUMPRODUCT((WEEKDAY(日期,2)>5)*1)

(1) SUMPRODUCT((WEEKDAY(日期,2)>5)*金額)

利用 WEEKDAY 函數設定參數2,傳回值6~7對應星期六~星期日為假日。

本式可計算所有日期是星期六~星期日者的總和。

(2) SUMPRODUCT((WEEKDAY(日期,2)>5)*1)

條件判斷會傳回 TRUE/FALSE 陣列,經過「*1」運算後,可以轉換為 1/0 的陣列。

本式可計算所有日期是星期六~星期日者的個數。

(3) 二者相除即為平均

 

【陣列公式】

Excel-計算星期幾的平均

1. 各星期幾的平均

儲存格F4:{=AVERAGE(IF(WEEKDAY(日期,2)=ROW(A1),金額,""))}

這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 會自動加上「{}」。

複製儲存格F4,貼至儲存格F4:F10。

判斷條件:WEEKDAY(日期,2)=ROW(A1),符合者傳回對應的金額,再透過 AVERAGE 函數加以平均。

2. 上班日的平均

儲存格F14:{=AVERAGE(IF(WEEKDAY(日期,2)<6,金額,""))}

這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 會自動加上「{}」。

判斷條件:WEEKDAY(日期,2)<6,符合者傳回對應的金額,再透過 AVERAGE 函數加以平均。

3. 假日的平均

儲存格F15:{=AVERAGE(IF(WEEKDAY(日期,2)>5,金額,""))}

這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 會自動加上「{}」。

判斷條件:WEEKDAY(日期,2)>5,符合者傳回對應的金額,再透過 AVERAGE 函數加以平均。

 

【參考資料】

image SUMPRODUCT 函數參考微軟提供的說明網頁:SUMPRODUCT 函數
image WEEKDAY 函數參考微軟提供的說明網頁:WEEKDAY 函數
 

學不完.教不停.用不盡文章列表

arrow
arrow
    創作者介紹
    創作者 vincent 的頭像
    vincent

    學不完.教不停.用不盡

    vincent 發表在 痞客邦 留言(0) 人氣()