dateadd関数はVBAでのみ使用できる関数で、通常のExcel関数としては使えません。10日後、3か月後、5年1カ月後、1週間前など、足し算や引き算のやり方を紹介します。色んなやり方はありますが、最初に紹介するDATE関数だけ覚えておけば十分です。
1.DATE関数
これさえ覚えておけば、日付に一定期間を足す・引くはやれるでしょう。私の経験上9割はこれで足りています。
=DATE(YEAR(A2)+年数,MONTH(A2)+月数,DAY(A2)+日数)
演算する対象をA2セルの日付とした場合、上記のように汎用的に表すことができます。○日後を計算したい場合は"日数"の箇所のみ設定し"年数"と"月数は不要です。○か月後を掲載したい場合は"月数"の箇所のみ設定し"年数"と"日数"は不要です。○年後についても同様。○か月と○日後など、月数と日数の複合での計算も可能です。これらをまとめてみるとこのようなイメージになります。
9~11行目にもあるように、○日前、○か月前のような過去を計算することももちろんできます。
セルのひとつひとつの計算式を修正するのは面倒なので、年・月・日の数字だけ入力すれば計算されるようにするとすればこんな感じでしょうか
1行ごとに計算をするようなことは実務上は考えにくいですね。現実的な使い方としては、"入会日から90日間が有効期間というような顧客リスト"を作成する場合、以下のような使い方ができます。
このやり方だけ覚えておけば十分ですが、他にも使える関数や、Excelの日付のシルアル値の考え方を利用した計算方法を紹介しておきます。
2."日"の足し算・引き算
=日付+日数
Excelは日付も数字として扱うことができます。日付を入力したはずなのに43009というような数字が表示されたことはないでしょうか?
Excel上では1900/1/1を1として認識しています。この時の1のことをシリアル値といいます。1900/1/2はシリアル値では2となります。シリアル値43009は1900/1/1から43009日目を意味しており、日付で表示すると2017/10/10となります。
ここまでの説明でもうお分かりでしょうか。通常の数字の足し算・引き算と同じやり方で、日付単位の足し算・引き算もできてしまいます。
例えば、A1セルに日付がある場合、1日後は
=A1+1
1週間前は
=A1-7
日付とシリアル値の関係は次の通り。
この計算方法は、単純に日数だけ計算しているためひと月の日数が30日、29日、28日と異なった場合に自動で判定されません。単純に10年後を計算しようと365日×10年=3650日を足し算しても
と、うるう日の分だけずれてしまいますので注意してください。
シリアル値の考え方を利用すると、Excelでカレンダーがカンタンにつくれます。タスク管理表やWBS(Work Breakdown Structure)の作成にも応用できます。Excelカレンダーはまた別の機会にご紹介します。
3."月"の加算/減算
月は30日、31日、28日、29日など月によって日数が異なるため、既に紹介した日単位の計算では対応しきれません。月単位の加算/減算はEDATE関数で○か月後や○か月前を計算することができます。
=EDATE(日付,月数)
例えば、A1セルに日付がある場合、3か月後の計算は
=EDATE(A1,3)
3か月前の計算は
=EDATE(A1,-3)
で計算できます。
4.まとめ
シリアル値での日単位の計算や、EDATE関数で月単位の計算ができますが、冒頭に紹介しているDATE関数さえあれば年・月・日のどの単位でも計算できます。覚えておくのが大変という場合は、このページをブックマークしておいてください。
=DATE(YEAR(A2)+年数,MONTH(A2)+月数,DAY(A2)+日数)