エクセルでは日付関係の関数が複数用意されています。
主にどんなものがあるか、こちらでまとめていきます。
日付関数の種類
エクセルでは日付をシリアル値というもので管理します。
シリアル値は、1900年1月1日を「1」、1900年1月2日を「2」...と数字を割り振って表現しているものです。
書式設定で日付フォーマットにしないと、日付のシリアル値が表示されることあるので注意しましょう。
日付でよく利用されるのは以下のものです。
現在日付を取得する
NOW
- 機能:現在の日付時刻を表示
- 書き方:「NOW()」
- 使い方:「=NOW()」とすると「 2019/6/16 10:06」のように現在の日付と時間が表示されます。
TODAY
- 機能:現在の日付時刻を表示
- 書き方:「TODAY()」
- 使い方:「=TODAY()」とすると 「2019/6/16」のように現在日付を表示します。
NOWと違って、TODAYは現在日付は返しますが、現在時刻は返しません。
日にちや曜日を調べる
用意された関数を使わなくてもセル内で計算してx日後を算出できます。
例えば3日後を出したい場合、A1に日付が入っていれば「=A1+3」で計算できます。
前日なら 「=A1-1」で計算できます。
2週間後を計算したい場合には、1週間は7日ですから「7*2」のように計算できます。
つまり、A1に日付が入っていれば「=A1+7*2」で計算できます。
WEEKDAY
- 機能:曜日番号を返します。日曜日なら1、月曜日なら2を返します。
- 書き方:「WEEKDAY(日付[またはセル])」
- 使い方:日付がA1セルにある場合、「=WEEKDAY(A1)」で曜日番号を返します。
EDATE
- 機能:日付のx月後を表します。
- 書き方:「EDATE(日付[またはセル], 月)」
- 使い方:「=EDATE("2019/5/1",3)」とすると「 2019/8/1」のように3か月後の日にちを示します。
ただし「=EDATE("2019/5/31",1)」とすると、6月は30日までなので「2019/6/30」という表示になります。
EOMONTH
- 機能:日付のx月後の月末を表します。
- 書き方:「EOMONTH(日付[またはセル], 月)」
- 「=EOMONTH("2019/5/1",3)」とすると「 2019/8/31」のように3か月後の月の最終日を示します。
日数をカウントする
NETWORKDAYS
- 機能:開始日と終了日を指定して、土日以外の日数を取得できます。
- 書き方:「NETWORKDAYS(開始日付、終了日付)」
- 使い方:「=NETWORKDAYS("2019/1/1","2019/12/31")」とすると「261」と算出されます。
日付関数の不具合
動かない?うまく 作動しない?変な値を返す?
「=EDATE(10,2)」のように数字の引数だけしていすると「70」という数字だけ返ってくる場合がありました。
これはシリアル値と呼ばれるもので、1900年1月1日を「1」としてあらわすものです。
試しにセルを選択後、書式設定を使って日付表示に変更します。すると「1900/3/10」と表示されました。
書式設定で日付に設定していないと、「日付が出ない?」と困る場合があるので注意しましょう。
令和にならない?
ウィンドウズアップデートが実施され、ウィンドウズで令和と自動で表記されるようになりました。
エクセルでも「書式設定」で日付を和暦で表示させると「令和」になります。
ただし一部の古いOS(マックのシエラなど)は令和に未対応のため、書式設定だけでは「令和」にはなりません。VBAを使って自分でカスタマイズする必要はあります。
#NAMEエラー
「=NOW()」とすべきところを「=NOW」としてしまうなど、書き方が正しくない場合にこのようなエラーになります。
EDATEがない?
古いエクセルの場合EDATE関数が実装されていないことがありました。
最新、または比較的新しいバージョンのエクセルでは利用可能となっています。