見出し画像

年度別集計にEDATE関数を用いる[Googleスプレッドシート]

「年度」は必ずしも1月始まりとは限りません。
学校は4月始まりがほとんどですし、企業も決算月はまちまちです。

「年度=4月始まり」とし、Googleスプレッドシートの
ピボットテーブルで年度別に集計しようとしたところ、
元データには「日付(yyyy/mm/dd)」はあるものの、「年度」がないことに気付きました。

当初はIF関数を用いようとしましたが、所属しているコミュニティのメンバーにEDATE関数を用いる手法を教えて頂きました。ありがとうございました。
自分の理解を深めるためにも本記事で整理します。

以下のような売上データがあるとして、

以下のような「年度別/事業所別」のクロス集計をしたいとします。

Googleスプレッドシートのピボットテーブルでは、
「ピボット日付グループを作成」というメニューがあり、
「年」単位で集計することが出来ますが

今回の場合、「4月始まり」の年度別集計をしたいので、
1-3月分の集計が意図通りになりません。

そこで集計のために「年度」列を追加します。

【1】IF関数を用いる手法

セルF2以降は以下の式を用います。

=IF(MONTH(D2)<=3,YEAR(D2)-1,YEAR(D2))

MONTH関数を用い列Dが1-3月なら「年」から1を引く
そうでなければ「年」はそのまま

という条件分岐をIF文を用い、「年度」を返します。

私は当初この手法しか思いつきませんでしたが、
EDATE関数を用いるともっとシンプルにすることができました。

【2】EDATE関数を用いる手法

セルF2以降は以下の式を用います。

=YEAR(EDATE(D2,-3))

EDATE関数は、開始日から指定した月数だけ後ろまたは前の日付を返す関数です。

EDATE(開始日, 月数)

  • 開始日 - 結果を計算するための起点となる日付

  • 月数 - 開始日の後ろ(正)または前(負)の計算対象となる月数

第二引数「月数」を「-3」とすると、
以下の日付はそれぞれ下記のように「3か月前」の日付を返します。

開始日 → 戻り値
2022/01/31 → 2021/10/31
2022/02/28 → 2021/11/28
2022/03/31 → 2021/12/31
2022/04/01 → 2022/01/01

以上の戻り値を元にYEAR関数を用いると、意図する年度を取得することが出来ます。

開始日 → 戻り値 →YEAR関数による戻り値
2022/01/31 → 2021/10/31 →2021
2022/02/28 → 2021/11/28 →2021
2022/03/31 → 2021/12/31 →2021
2022/04/01 → 2022/01/01 →2022

以上、EDATE関数を用いシンプルに「年度」を取得する手法を記しました。


<参考>EDATE関数 リファレンス


この記事が気に入ったらサポートをしてみませんか?