2020年7月17日 星期五

以試算表(Excel)參照一個日期或年月份,計算該月份有幾個星期(禮拜)日、一、二、三、四、五或六

我的 Google Sheets (Drive) 線上記帳本,是以每個月為單位統計,有些固定每週的支出,想要預先填入作為預設金額,常常需要拿月曆比對察看要乘以幾很麻煩,用函式計算方便多了,來記錄一下。

參照一個日期計算該月份有幾個星期幾,這牽扯到幾個公式,一是計算該月最大日數也就是最後一天,一是加總日期範圍內的某個星期幾。以下範例分別是在B2有個參照日期,以及A2有個202007(yyyymm)的參照月份計算方式。


列出該日期星期幾:
日期參照 =choose(WEEKDAY(B2),"日","一","二","三","四","五","六")
weekday函式帶出的數值從週日開始為1,依次排到週六就是7。


計算當月最後一天:  
日期參照 =day(DATE(year(B2),month(B2)+1,0))  
月份參照 =day(DATE(left(A2,4),right(A2,2)+1,0))
其實就是找出下個月一號的前一天日期的日部分。


加總日期範圍內的星期幾:
日期參照統計該月週二數量 =SUMPRODUCT(--(MOD(ROW(INDIRECT(DATE(year(B2),month(B2),1)&":"&DATE(year(B2),month(B2),day(date(year(B2),month(B2)+1,0))))),7)=3))

月份參照統計週六數量 =SUMPRODUCT(--(MOD(ROW(INDIRECT(DATE(left(A2,4),right(A2,2),1)&":"&DATE(left(A2,4),right(A2,2),day(date(left(A2,4),right(A2,2)+1,0))))),7)=0)) 

公式主要加總所有除以七餘數等值的項目,Mod餘數等於0=週六(7所以整除)、1=週日、2=週一、3=週二、4=週三、5=週四、6=週五,修改前述公式倒數第三個字,即可改成需要計算的星期幾範圍。