スプレッドシート:週ごとの合計、曜日ごとの合計

スプレッドシートで、週ごと、曜日ごとの集計をしてみます。

週ごと集計

週の定義

 週について以下としました。

  • 始まり:月曜日
  • 終わり:土曜日
  • 当月のみ
  • 第1週の始まり:曜日が特定できない
  • 最終週の終わり:曜日が特定できない

実施方法

  1. 週末(土曜日)の特定

    WEEKDAY 関数を利用し、特定。
    ・1週目:7-WEEKDAY(A1)+A1)
    ・2週目移行は、7,14,21を加える。
    利用した式:=(7-WEEKDAY(A1)+A1)+7*(B1-1)
             A1セル:該当付きの月初(例 2019/10/1)
                         B1セル:第何週目。(例 第1周目なら、1を入れる)
    ※参考:第3月曜日など「第Nなんとか曜日」が何日かを1行の式で算出する方法【Googleスプレッドシート、Excel】 | TeraDas

  2. 週の合計

    SUMIFS関数を利用し、合計値を出す。
    ・データ
     集計対象データ(実際は、右に続いている)
    f:id:maki1616:20191022101746p:plain
     月初と週末の日付が入力されているセル(例:2019/10/1)
      A1:月初。A2:1週目末。A3:2週目末。A4:3週目末。A5:4週目末。
    ・週ごとの集計範囲の計算(日付、範囲の部分をXとする)
      1週目:A1<=  X <=  A2              (例 2019/10/1 ~ 2019/10/5)
            2週目:(A2+1) <=  X  <=  A3     (例 2019/10/6 ~ 2019/10/12)
            3週目:(A3+1) <=  X  <=  A4     (例 2019/10/13 ~ 2019/10/19)
            4週目:(A3+1) <=  X  <=  A4     (例 2019/10/20 ~ 2019/10/26)
            5週目:(A3+1) <=  X  <=  A4     (例 2019/10/26 ~ 2019/10/31)
    ・5週は、来月となるため今月末とする必要がある。
        EOMONTH関数を使い、月末を出す。月末を超えた場合は、月末とする。

  3. ・利用した式 
        =if(EOMONTH(A1,0)>(7-WEEKDAY(A1)+A1+7*(B2-1)),7-WEEKDAY(A1)+A1+7*(B2-1),EOMONTH(A1,0))

曜日ごと集計

 実施方法

  1. 曜日の特定

    WEEKDAY関数を利用して、曜日ごとの数字を取得する。

  2. 集計

    SUMIF 関数を利用し、合計値を出す。
    ・データ:
     1行目:年月日。
     2行目:1行目を使い、 WEEKDAY関数で曜日番号を計算。(例 =Weekday(D1))

    f:id:maki1616:20191022105337p:plain

    ・利用した式(日曜日を集計(週番号 1))
     =sumif(D2:K2,1,D3:K3)

まとめ

 結構複雑で大変です。最初から関数があれば良いと思います。