いきなり答える備忘録

Google Workspace(旧G Suite)・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)日付が年度の何日目か求める

 Googleスプレッドシートで、ある日付がその年度の何日目かを求める例です。単純なようで多くの要素を含んだ計算です。
 なお、年度開始日(年度が4月始まりの場合4/1)を1日目とします。

  • EDATE関数とDATE関数を組み合わせて、日付が年度の何日目なのかを求めることができます。
  • 具体的には「=日付-DATE(YEAR(EDATE(日付,-年度開始月+1)),年度開始月,0)」となります。

手順

f:id:accs2014:20220406133539p:plain:right:w500

 まず年度が4月始まりである場合についてです。
 B列にいくつかの日付が入力されています。
 C3セルに次のような式を入力して下方にコピーし、B列の日付が年度の何日目(4月1日を1日目とする)にあたるのかを求めています。

 C3セル

=B3-DATE(YEAR(EDATE(B3,-3)),4,0)

 まず「EDATE(B3,-3)」は「日付(B3)の3か月前の日付」です。これをYEAR関数で囲んだ「YEAR(EDATE(B3,-3))」は、「日付の3か月前の日付が属している年」であり、これはつまり年度を表す数(年度開始日が属する年)となります。
 さらにDATE関数で囲んで「DATE(YEAR(EDATE(B3,-3)),4,0)」とすることで、年度開始日の前日つまり3月31日の日付が求められます。
 あとはこの日付を元の日付から差し引くことで、日付が年度の何日目なのかが求められます。


 なお、年度の数字を求める部分については、次の記事でも紹介しています。

www.officeisyours.com


f:id:accs2014:20220406133543p:plain:right:w500

 こちらの画像は、年度開始月をB3セルで指定させたうえで各日付が年度開始日から何日目なのかを求める例です。
 C6セルに次の式を入力して下方にコピーしています。

 C6セル

=B6-DATE(YEAR(EDATE(B6,-B$3+1)),B$3,0)

 B3セルへの参照がコピーによりずれないように絶対参照($)を用いています。
 最初の例では年度開始月=4のケースを考えましたが、一般化すると「=日付-DATE(YEAR(EDATE(日付,-年度開始月+1)),年度開始月,0)」と表すことができ、日付と年度開始月をそれぞれセル参照で置き換えたものがこの式です。

 なお、C6セルにARRAYFORMULA関数を用いた次のような式を入力すれば、5つの答えを一括して求める(表示させる)ことができます。式はやや長くなりますがセルのコピーがいらなくなり、絶対参照も省略できます。

=ARRAYFORMULA(B6:B10-DATE(YEAR(EDATE(B6:B10,-B3+1)),B3,0))