Excelの日付はシリアル値と呼ばれる数値で管理されています。そのため日付の計算や形式を自由に変えることができます。
今回は日付に関する基本的な設定と、知っておくと便利な関数をご紹介します。
シリアル値
Excelは日付を「シリアル値」という数値で管理しています。
「1900年1月1日」を1として、1日ごとに1ずつ増えていきます。
例えば、2025年4月1日は1900年1月1日から45,748日目であるため、シリアル値は「45748」となります
日数を数値として扱うことで、「45748+1=45749(2025年4月1日)」というような日付の計算も可能になります。
日付に関する基本関数
Excelでは、日付を数値として扱うことで、計算や特定の数値の取得が簡単に行えます。ここからは、具体的に日付を操作するための基本的な関数を見ていきましょう。
日付の書式を変更
TEXT関数は、日付の表示形式を変更し、特定の文字列と組み合わせることができる関数です。
=TEXT(値,書式形式)
例:文字列を加える「=TEXT(TODAY(), “yyyy/mm/dd”) &”現在”」
和暦に変換する「=TEXT(DATE(年,月,日),”ggge年m月d日”)」

今日の日付を取得
TODAY関数は入力時の日付を取得する関数です。シートを開く度に自動的に日付が更新されます。
=TODAY()
例:前日「=TODAY()-1」
日付を更新しない場合は、ショートカットキー[ctrl]+[;]を入力することで今日の日付を入力することができます。
年・月・日から日付を作成
DATE関数は指定した数値から日付を作成する関数です。年、月、日を単独で取り出す場合は、YEAR関数、MONTH関数、DAY関数でそれぞれの数値を取り出すことができます。
=DATE(年,月,日)
例:カレンダーを作る「=DATE(年,月,1) 」
入社年度を求める「=YEAR(入社日)-(MONTH(入社日)<4)」

2つの日付の差を求める
DATEDIF関数は指定した2つの日付の期間を求める関数です。単位を指定することで年数、月数、日数など表示形式を変更することができます。
この関数は、[関数の挿入]ダイアログボックスには表示されないため、手入力で打ち込む必要があります。
=DATEDIF(開始日,終了日,単位)
単位は、下記6種類あります。
- Y:年数を求める(従業員の年齢や勤続年数など)
- M:月数を求める(勤続月数やプロジェクト期間など)
- D:日数を求める(支払期限や締切までの日数など)
- MD:1ヶ月以内の日数差(1ヶ月以内に行われるイベントの期間など)
※Microsoftは単位”MD”を使用すると、意図しない結果を返す可能性があるため、推奨しないとしています。使用する際は結果を確認しながら活用するか、可能であればDAY関数などで代替することをおすすめします。 - YM:年を無視した月数差(毎年恒例イベントの間隔比較など)
- YD:年を無視した日数差(記念日の日数計算など)
例:誕生日から現在の年齢を取得「=DATEDIF(誕生日, TODAY(), “Y”)」
現在時点での在籍期間を取得「=DATEDIF(入社日,TODAY(),”Y”)&”年”&DATEDIF(入社日,TODAY(),”YM”)&”ヶ月”」

1年未満は日数でカウントダウ 「=DATEDIF(TODAY(),DATE(2025,4,13),”Y”)&”年”」&「=DATEDIF(TODAY(),DATE(2025,4,13),“YD”)&“日”」

イベントまでのカウントダウン「=DATEDIF(DATE(2023,5,1),DATE(2025,4,13),”MD”)&”日”」
単位”MD”の代わりにDAY関数とIF関数を使用した例「=DATEDIF(開始日,終了日,”YM”)&”ヶ月”&(DAY(終了日)- DAY(開始日)+IF(DAY(終了日)<DAY(開始日), DAY(EOMONTH(開始日,0)),0))&”日”」

〇ヶ月後、〇ヶ月前の日付を取得
EDATE関数は翌月や前月の日付を取得する関数です。開始日を基準に月を指定することで数か月前や、後の同じ日を取得することができます。
=EDATE(開始日,月)
例:先月の同日「=EDATE(開始日,-1)」
翌月の同日「=EDATE(開始日,1)」
月末の日付を取得
EOMONTH関数は月末の日付を表示する関数です。開始日を基準に月を指定することで数か月前や、後の月末を取得することができます。また関数に「+1」することで、初日を表示することも可能です。
=EOMONTH(開始日,月)
例:当月の月末「=EOMONTH(TODAY(),0)」
前月の月末「=EOMONTH(TODAY(),-1)」
当月の初日「=EOMONTH(TODAY(),-1)+1」
当月の初日から月末の日付を取り出す「=TEXT(EOMONTH(TODAY(),-1)+1,”yyyy/mm/dd”)&”-“&TEXT(EOMONTH(TODAY(),0),”yyyy/mm/dd”)」
納品日の翌月末を支払期限とする「=EOMONTH(開始日,1)」

営業日を求める
WORKDAY関数は土日を除いて、指定した日数後を計算する関数です。あらかじめ用意しておいた祝日の一覧を祭日に指定すれば、土日に加えて祝日を除外することもできます。開始日は0日目、翌日を1日目として計算します、
=WORKDAY(開始日,日数,[祭日])翌日が1営業日目
例:受注日から5営業日後の日付「=WORKDAY(受注日,5)」
祝日リストを考慮した、受注日から5営業日後の日付「=WORKDAY(受注日,5,祝日) 」
この時、祝日の一覧を範囲選択し、名前ボックスに祝日と定義付けしておくと、文字を入力するだけで範囲を指定することができます。

営業日数を計算
NETWORKSDAYS関数は指定した期間から土日を除いた日数を計算する関数です。WORKDAY関数同様、あらかじめ用意しておいた祝日の一覧を祭日に指定すれば、土日に加えて祝日を除外することもできます。開始日を1日目として計算します。
=NETWORKDAYS(開始日,終了日,[祭日])当日含む
例:受注日から納品日までの営業日数「=NETWORKDAYS(受注日,納品日) 」
祝日リストを考慮した営業日数「=NETWORKDAYS(受注日,納品日,祝日)」

おわりに
日付の計算や表示形式のカスタマイズを覚えておくと、日々の業務に役立つかもしれませんよ。関数を活用できれば、業務の効率化が図れるだけでなく、データの管理がスムーズになります。ぜひ、試してみてください。
コメント