menu
書いてる野郎
orebike@gmail.com
A1 のセルに月末日を求めたい月のどこかの日付が入っているとすると
=EOMONTH(A1, 0)
で求められる。0
を 1
にすれば翌月月末日が求まる
特定の月の月末日が知りたいなら
=EOMONTH(DATE(2016, 2, 1), 0)
このように日付を1日で生成して(1日が存在しない月は無いので)求めればよい。
これをよく使う場合は会社での半期を求める場合でよくあるだろう 期初が1月1日ならば、5 を指定すれば、6月末日が手に入る
=EOMONTH(DATE(2016, 1, 1), 5)
第1引数に開始日第2引数に終了日を入れる
A1のセルに日付情報が入っているとして、今日までの日数計算するにはこうなる。
=DATEDIF(A1, TODAY(), "D")
実は日付型のデータを普通に引き算するだけで日数を計算してくれる。
しかし、この計算をするときは差分がほしいのではなくてその対象の2つの日付何日分あるかが知りたいことがほとんどで、 単に引き算しただけでは1日分足りなくなるので、1つ足す必要がある。
この答えは 183 になるが
=datedif(date(2019, 7,1),date(2019, 12 ,31), "D")
実際の6ヶ月の日数は 184 である。
=31+31+30+31+30+31
A1 セルに日付が入っていたとすると、このようにすると「火」とか表示される
=TEXT(A1, "ddd")
大量の日付が手間なくほしい場合に使える
このようにすると開始日終了日指定での連続日付が生成できる。
=ARRAY_CONSTRAIN(ARRAYFORMULA(DATE(2019,7,1) + ROW(A1:A1000)), (DATE(2019,12,31) - DATE(2019, 7, 1) + 1), 1)
わかりやすく分解して書くとこうなる。
=ARRAY_CONSTRAIN( ARRAYFORMULA( DATE(2019,7,1) + (ROW(A1:A1000) - 1) ), (DATE(2019,12,31) - DATE(2019, 7, 1) + 1), 1)
ポイントは ARRAYFORMULA を駆動するために ROW に適当にデカイ列をぶち込んでいる。 これは生成する日数より大きい範囲ならなんでもよい。
行番号を求めて1を引いて、それを開始日に足すことで、この場合なら1000日分のレコードを生成している。 次に ARRAY_CONSTRAIN で必要な日数分にカットして表示するという仕掛け。