「社員の年齢を自動で計算したい」「プロジェクトの残り営業日を数えたい」。Excelで日付まわりの計算をしようとすると、どの関数を使えばいいか迷いますよね。
日付計算に使える関数はたくさんあります。しかし場面ごとに最適な関数は異なります。間違った関数を選ぶと、計算結果がずれたり余計な手間が増えたりすることも。
この記事では、よくある4つの実務シーン別にベストな関数を早見表とフローチャートで整理しました。年齢・日数・営業日・年度、それぞれの計算方法と実務シナリオをまとめてマスターしていきましょう。
Excel日付計算の関数早見表【結論から】
まずは結論です。「どの場面でどの関数を使えばいいか」を一覧表にまとめました。
| やりたいこと | おすすめ関数 | 数式の例 |
|---|---|---|
| 年齢を求める | DATEDIF関数 | =DATEDIF(A1,TODAY(),"Y") |
| 2つの日付の日数差 | 日付の引き算 | =B1-A1 |
| 営業日を数える | NETWORKDAYS関数 | =NETWORKDAYS(A1,B1) |
| 月末日を求める | EOMONTH関数 | =EOMONTH(A1,0) |
| 年度を判定する | YEAR関数+IF関数 | =IF(MONTH(A1)>=4,YEAR(A1),YEAR(A1)-1) |
| 期間の年数・月数 | DATEDIF関数 | =DATEDIF(A1,B1,"M") |
| 休日パターンをカスタム | NETWORKDAYS.INTL関数 | =NETWORKDAYS.INTL(A1,B1,11) |
| N ヶ月後の同日 | EDATE関数 | =EDATE(A1,3) |
迷ったらこの表を見れば、使うべき関数がすぐにわかります。
選択フローチャート
どの関数を使うか迷ったら、次の3ステップで判断してください。
- 何を計算したい?
- 期間の長さ(年・月・日) → 手順2へ
- 特定の日付(月末・N ヶ月後など) → 手順3へ
- 年度・四半期・上半期の判定 → YEAR + IF + MONTH
- 期間の単位は?
- 年齢などの満年数 → DATEDIF(”Y”)
- 月数 → DATEDIF(”M”) または DATEDIFを避けるなら YEAR/MONTH 引き算
- 暦の日数 → 日付の引き算 または DAYS
- 営業日数 → NETWORKDAYS / NETWORKDAYS.INTL
- 求めたい日付は?
- 月末日 → EOMONTH
- N ヶ月後の同日 → EDATE
- N 営業日後 → WORKDAY / WORKDAY.INTL
迷ったらまずDATEDIFと引き算
「期間が知りたい」場面の8割はDATEDIFか引き算で解決します。「特定の日付が知りたい」場面の大半はEOMONTHかEDATEで足ります。この4つを押さえれば、日付計算で困ることは大幅に減りますよ。
ここからは各シーンの詳しい使い方を順番に解説していきます。
年齢を自動計算する関数の使い分け
人事・総務の業務でよく出てくるのが年齢計算です。生年月日から「今日時点で何歳か」を自動で求める方法を見ていきましょう。
DATEDIF関数で年齢を求める基本
年齢計算でもっともシンプルなのがDATEDIF関数です。
=DATEDIF(生年月日, TODAY(), "Y")
第1引数に生年月日のセル、第2引数にTODAY関数、第3引数に "Y" を指定します。これで「満年齢」が数値で返ります。
たとえばセルA2に 1990/4/15 と入力されている場合、数式は次のとおりです。
=DATEDIF(A2, TODAY(), "Y")
2026年3月17日時点では 35 と表示されます。
DATEDIF関数の第3引数(単位)を変えると、年数以外の期間も求められます。
| 単位 | 意味 | 用途の例 |
|---|---|---|
| “Y” | 期間の年数 | 年齢計算 |
| “M” | 期間の月数 | 在籍月数の計算 |
| “D” | 期間の日数 | 経過日数の計算 |
| “YM” | 年数を無視した月数 | 「○年○ヶ月」の月部分 |
| “MD” | 年数と月数を無視した日数 | 「○年○ヶ月○日」の日部分 |
| “YD” | 年数を無視した日数 | 誕生日まで日数の計算 |
「○年○ヶ月」と表示したい場合は、次のように組み合わせます。
=DATEDIF(A2,TODAY(),"Y")&"年"&DATEDIF(A2,TODAY(),"YM")&"ヶ月"
DATEDIFの非公式サポート問題と代替策
DATEDIF関数には知っておくべき注意点があります。この関数はExcelの関数一覧やオートコンプリートに表示されません。
Microsoftの公式ドキュメントでも「既知の問題がある」と記載されています(出典: Microsoft公式)。もともとLotus 1-2-3との互換性のために残されている関数です。
DATEDIFの単位ごとの注意点
"Y"単位(年齢計算)は問題なく動作します。注意が必要なのは"MD"単位で、まれに不正確な結果を返すことがあります。
年齢計算だけなら安心してDATEDIFを使ってOKです。ただし「念のためDATEDIFを避けたい」という方向けに代替策を紹介します。
代替策1: YEAR関数とIF関数を組み合わせる
=YEAR(TODAY())-YEAR(A2)-IF(DATE(YEAR(TODAY()),MONTH(A2),DAY(A2))>TODAY(),1,0)
ちょっと長いですが、やっていることはシンプルです。「今年の誕生日がまだ来ていなければ1を引く」という仕組みです。
代替策2: YEARFRAC関数+INT関数
=INT(YEARFRAC(A2,TODAY(),1))
YEARFRAC関数は「期間が1年に占める割合」を返します。これをINT関数で整数に切り捨てれば年齢になります。第3引数の 1 は「実日数ベース」の意味です。
| 方法 | 数式の長さ | 精度 | おすすめ度 |
|---|---|---|---|
| DATEDIF | 短い | 高い(”Y”単位) | 最もおすすめ |
| YEAR+IF | 長い | 高い | DATEDIFを避けたい場合 |
| YEARFRAC+INT | 短い | やや低い(閏年で1日ずれる場合あり) | 簡易計算向き |
YEARFRAC関数との違い
YEARFRAC関数は「期間の年数」を小数で返す関数です。DATEDIF関数の "Y" は整数を返す点が異なります。
=YEARFRAC(A2, TODAY(), 1)
上の数式は 35.92... のような小数を返します。年齢の端数(勤続年数の精密計算など)が必要なときに便利です。
一方、満年齢のように整数で欲しいときはDATEDIFのほうがシンプルです。
勤続年数の小数表記が便利な場面
退職金計算で「勤続17.5年」のように小数で扱いたいときは、YEARFRACがそのまま使えます。第3引数(基準)は
1(実日数)にしておくと、閏年もきちんと考慮してくれますよ。
日数を計算する関数の使い分け
「プロジェクトの残り日数」や「契約期間の日数」など、2つの日付の間の日数を数えたい場面を見ていきましょう。
日付の引き算でシンプルに日数を求める
もっとも簡単な方法は、日付どうしの引き算です。
=B2-A2
Excelの日付は内部的にシリアル値(1900年1月1日を1とした連番)で管理されています。そのため引き算するだけで日数差が求まります。
たとえばA2に 2026/4/1、B2に 2026/9/30 と入力して引き算すると、182 と表示されます。
結果が日付で表示されてしまったら
結果が
182ではなく日付(1900/7/1など)で表示される場合は、セルの表示形式を「標準」に変更してください。引き算の元セルが「日付」書式だと、結果セルも自動で同じ書式になることがあります。
DAYS関数で日数を数える
DAYS関数は日数を求める専用の関数です。
=DAYS(終了日, 開始日)
引き算と同じ結果が得られます。ただし引数の順序に注意してください。第1引数が「終了日」、第2引数が「開始日」です。引き算とは逆の順番になります。
=DAYS(B2, A2)
DAYS関数のメリットは、文字列の日付にも対応している点です。=DAYS("2026/9/30", "2026/4/1") のように直接文字列を指定しても正しく計算できます(出典: Microsoft公式)。
| 方法 | 数式 | メリット |
|---|---|---|
| 引き算 | =B2-A2 | シンプル。計算が速い |
| DAYS関数 | =DAYS(B2,A2) | 文字列日付にも対応 |
| DATEDIF(“D”) | =DATEDIF(A2,B2,"D") | 月数・年数も同時に扱える |
実務ではシンプルな引き算で十分なケースがほとんどです。文字列の日付を扱う場面ではDAYS関数を使ってみてください。
NETWORKDAYS関数で営業日を数える
「土日・祝日を除いた営業日だけを数えたい」。こんなときに使うのがNETWORKDAYS関数です。
=NETWORKDAYS(開始日, 終了日, 祝日リスト)
第3引数の祝日リストは省略可能です。省略すると土日だけが休みとして計算されます。
=NETWORKDAYS(A2, B2)
祝日も除外したい場合は、祝日の日付を別のセル範囲に入力しておきます。たとえばD2:D15に祝日を入力した場合は次のとおりです。
=NETWORKDAYS(A2, B2, D2:D15)
両端日を含む点に注意
NETWORKDAYS関数は開始日と終了日の両方を含めてカウントします。「4月1日から4月3日」は3日(月・火・水)です。引き算の
B2-A2は2日になる点が異なります。
NETWORKDAYS.INTL関数で休日パターンをカスタマイズ
「うちの会社は水曜と日曜が休み」のように、土日以外の休日パターンを設定したいケースもありますよね。そんなときはNETWORKDAYS.INTL関数を使います。
=NETWORKDAYS.INTL(開始日, 終了日, 休日パターン, 祝日リスト)
第3引数の休日パターンは数値で指定します。よく使うパターンは次のとおりです。
| パターン番号 | 休日 | 使いどころ |
|---|---|---|
| 1(既定) | 土曜・日曜 | 一般企業 |
| 2 | 日曜・月曜 | 月曜定休の店舗 |
| 3 | 月曜・火曜 | 火曜定休の店舗 |
| 7 | 金曜・土曜 | イスラム圏の企業 |
| 11 | 日曜のみ | 土曜出勤の工場・小売 |
| 12 | 月曜のみ | 月曜のみ休業の施設 |
たとえば日曜のみ休みで営業日を数える場合はこうなります。
=NETWORKDAYS.INTL(A2, B2, 11)
7桁の文字列で曜日を細かく指定
第3引数には
"0000011"のような7桁の文字列も指定できます。月〜日の順で、休日は1・出勤は0です。「水曜と日曜だけ休み」なら"0010001"ですね。番号で表現できないシフトでも自由に組めますよ。
月末日を求めるEOMONTH関数の日付計算
経理・請求業務で活躍するのが月末日の計算です。「今月の最終日は何日か」「翌々月末の支払期日はいつか」を自動で求めてみましょう。
EOMONTH関数の基本
EOMONTH関数は指定した月数後(または前)の月末日を返します。
=EOMONTH(開始日, 月数)
第2引数の月数で「何ヶ月後の月末か」を指定します。
| 数式 | 意味 | 結果の例(A2が2026/4/15の場合) |
|---|---|---|
=EOMONTH(A2, 0) | 当月末 | 2026/4/30 |
=EOMONTH(A2, 1) | 翌月末 | 2026/5/31 |
=EOMONTH(A2, -1) | 前月末 | 2026/3/31 |
=EOMONTH(A2, 2) | 翌々月末 | 2026/6/30 |
=EOMONTH(A2, 12) | 1年後の月末 | 2027/4/30 |
翌月末・翌々月末の支払期日を計算する
請求書の支払条件が「翌月末払い」や「翌々月末払い」の場合、EOMONTH関数で期日を自動計算できます。
翌月末払い(月末締め)の場合
=EOMONTH(A2, 1)
翌々月末払い(月末締め)の場合
=EOMONTH(A2, 2)
月初日を求めたい場合
EOMONTH関数で前月末を求めて、1日を足すと当月1日になります。
=EOMONTH(A2, -1)+1
EOMONTH+WORKDAYで月末の営業日を求める
「月末の5営業日前」を求めたいときは、EOMONTH関数とWORKDAY関数を組み合わせます。
=WORKDAY(EOMONTH(A2,0), -5, 祝日リスト)とすれば、月末から営業日ベースで5日前の日付が求まります。月次の締め日を「営業日ベース」で運用している会社で重宝しますよ。
EDATE関数でN ヶ月後の同日を求める
「3ヶ月後の同じ日付」を求めたいときはEDATE関数を使います。月末日ではなく「同日」を返す点がEOMONTHとの違いです。
=EDATE(開始日, 月数)
| 数式 | 意味 | 結果の例(A2が2026/4/15の場合) |
|---|---|---|
=EDATE(A2, 1) | 1ヶ月後の同日 | 2026/5/15 |
=EDATE(A2, 3) | 3ヶ月後の同日 | 2026/7/15 |
=EDATE(A2, 12) | 1年後の同日 | 2027/4/15 |
=EDATE(A2, -6) | 半年前の同日 | 2025/10/15 |
契約更新日や定期点検日の計算で重宝します。たとえば「2026/4/15に契約開始、1年契約」なら、=EDATE(A2,12)-1 で 2027/4/14 が更新前日として求まりますね。
| シーン | おすすめ関数 | 数式例 |
|---|---|---|
| 請求書の月末締め支払期日 | EOMONTH | =EOMONTH(A2,1) |
| 契約更新日(N ヶ月契約) | EDATE | =EDATE(A2,12) |
| 月初日の自動入力 | EOMONTH | =EOMONTH(A2,-1)+1 |
| 月末締め営業日ベースの締め日 | EOMONTH+WORKDAY | =WORKDAY(EOMONTH(A2,0),-5,祝日) |
年度を判定する関数テクニック
日本の企業や学校では「4月始まり」の年度を使うことが多いですよね。Excelには年度を直接返す関数はありませんが、YEAR関数とIF関数を組み合わせれば簡単に求められます。
YEAR関数+IF関数で年度を求める
年度判定の基本の数式はこちらです。
=IF(MONTH(A2)>=4, YEAR(A2), YEAR(A2)-1)
考え方はシンプルです。「MONTH関数で月を取り出し、4月以降ならそのまま、3月以前なら1年引く」。これだけで4月始まりの年度が求まります。
| 日付 | MONTH(A2) | 判定 | 年度の結果 |
|---|---|---|---|
| 2026/4/1 | 4 | 4以上 → そのまま | 2026 |
| 2026/9/30 | 9 | 4以上 → そのまま | 2026 |
| 2027/3/31 | 3 | 4未満 → 1年引く | 2026 |
| 2027/1/15 | 1 | 4未満 → 1年引く | 2026 |
2026年4月から2027年3月まで、すべて「2026年度」と判定されるのがわかります。
4月始まりの年度またぎ処理
年度判定を使った実務パターンをいくつか紹介します。
「○○年度」と表示する
=IF(MONTH(A2)>=4,YEAR(A2),YEAR(A2)-1)&"年度"
上半期・下半期を判定する
4月〜9月を上半期、10月〜3月を下半期として判定します。
=IF(AND(MONTH(A2)>=4,MONTH(A2)<=9),"上半期","下半期")
四半期(Q1〜Q4)を判定する
4月始まりでQ1=4〜6月、Q2=7〜9月、Q3=10〜12月、Q4=1〜3月です。CHOOSE関数を使うとわかりやすく書けます。
=CHOOSE(MONTH(A2),4,4,4,1,1,1,2,2,2,3,3,3)
この数式は月の番号(1〜12)に応じてQ1〜Q4の数字を返します。「Q」を付けて表示したい場合はこうなります。
="Q"&CHOOSE(MONTH(A2),4,4,4,1,1,1,2,2,2,3,3,3)
開始月が4月以外の場合
年度の開始月が4月以外の場合は、IF関数の条件を変更してください。たとえば10月始まりなら
=IF(MONTH(A2)>=10, YEAR(A2), YEAR(A2)-1)です。海外子会社や学校・自治体で使う際は要注意ですよ。
実務で使う日付計算シナリオ集
ここからは実務でよくある5つのシーンを、具体的な数式で解説します。
次のサンプルデータを使います。
| A列(氏名) | B列(入社日) | C列(生年月日) | D列(契約終了日) |
|---|---|---|---|
| 田中太郎 | 2020/4/1 | 1990/4/15 | 2027/3/31 |
| 鈴木花子 | 2022/10/1 | 1995/8/20 | 2026/9/30 |
| 佐藤一郎 | 2018/7/15 | 1985/12/3 | 2028/7/14 |
| 山田美咲 | 2023/4/1 | 2000/1/30 | 2026/3/31 |
シナリオ1: 社員の年齢と勤続年数を一括計算
人事台帳で「今日時点の年齢」と「勤続年数」を自動で更新したい場面です。
年齢(満年齢)
=DATEDIF(C2, TODAY(), "Y")
勤続年数(○年○ヶ月)
=DATEDIF(B2,TODAY(),"Y")&"年"&DATEDIF(B2,TODAY(),"YM")&"ヶ月"
TODAY関数は開いた日に再計算されるので、毎日最新の値になります。年度更新のたびに数式を直す必要がなくなりますよ。
シナリオ2: 契約終了までの残り営業日を数える
「契約終了日まであと何営業日あるか」を表示する場面です。プロジェクトのカウントダウンにも使えます。
=NETWORKDAYS(TODAY(), D2)
祝日リストも考慮するなら、別シートに祝日一覧を作って参照します。
=NETWORKDAYS(TODAY(), D2, 祝日!$A$2:$A$50)
祝日リストの作り方
内閣府が公開している祝日CSVをダウンロードして「祝日」シートに貼り付ければ、メンテナンスフリーで毎年の祝日を反映できます。VLOOKUP を組み合わせれば、振替休日もまとめて管理できますよ。
シナリオ3: 請求書の支払期日を自動入力
「請求書発行日の翌月末払い」を自動計算する場面です。経理業務で頻出します。
=EOMONTH(A2, 1)
支払期日が土日に当たる場合、前営業日に繰り上げたいなら次のように書きます。
=WORKDAY(EOMONTH(A2,1)+1, -1, 祝日リスト)
「翌月末の翌営業日から1営業日戻る」というロジックです。月末が金曜なら金曜、土曜なら金曜、日曜なら金曜と、最も近い前営業日が返ります。
シナリオ4: プロジェクトの所要月数を計算
「プロジェクト開始から終了まで何ヶ月か」を求める場面です。請求書の按分計算や進捗管理で使います。
=DATEDIF(B2, D2, "M")
「○年○ヶ月」で表示したい場合はこちら。
=DATEDIF(B2,D2,"Y")&"年"&DATEDIF(B2,D2,"YM")&"ヶ月"
DATEDIFを避けたい場合は次の代替式が使えます。
=(YEAR(D2)-YEAR(B2))*12+MONTH(D2)-MONTH(B2)
シナリオ5: 年度別の集計用キーを作る
ピボットテーブルや SUMIFS で「年度別」に集計したいときの前処理です。
=IF(MONTH(A2)>=4,YEAR(A2),YEAR(A2)-1)&"年度"
この数式で「2026年度」のような文字列が返るので、SUMIFS の条件に直接渡せます。
=SUMIFS(売上!C:C, 売上!D:D, "2026年度")
四半期別に集計したいなら CHOOSE と組み合わせて「2026Q1」のようなキーを作ると便利です。
シナリオ早見表
| シナリオ | 関数の組み合わせ | 数式例 |
|---|---|---|
| 年齢の自動計算 | DATEDIF + TODAY | =DATEDIF(C2,TODAY(),"Y") |
| 勤続年月(○年○ヶ月) | DATEDIF × 2 | =DATEDIF(B2,TODAY(),"Y")&"年"&DATEDIF(B2,TODAY(),"YM")&"ヶ月" |
| 残り営業日のカウント | NETWORKDAYS | =NETWORKDAYS(TODAY(),D2,祝日) |
| 翌月末払いの支払期日 | EOMONTH | =EOMONTH(A2,1) |
| 支払期日を前営業日に繰り上げ | WORKDAY + EOMONTH | =WORKDAY(EOMONTH(A2,1)+1,-1,祝日) |
| プロジェクト所要月数 | DATEDIF | =DATEDIF(B2,D2,"M") |
| 年度別集計キーの作成 | YEAR + MONTH + IF | =IF(MONTH(A2)>=4,YEAR(A2),YEAR(A2)-1)&"年度" |
よくあるエラーと対処法
日付計算でつまずきやすいトラブルをまとめました。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 日数の引き算結果が日付(1900/…)で表示される | 元セルが「日付」書式 → 結果セルも日付書式に | セル書式を「標準」に変更 |
#NUM! エラー(DATEDIF) | 開始日 > 終了日になっている | 引数の順序を確認。第1引数が「古い日付」 |
#NAME? エラー(DATEDIF) | 関数名のタイプミス | DATEDIFは関数候補に出ないので手入力で確認 |
#VALUE! エラー | 日付が文字列として保存されている | DATEVALUE関数 で変換 |
| NETWORKDAYSの結果が想定より多い | 開始日と終了日の両方をカウントしている仕様 | 必要に応じて -1 で調整 |
EOMONTHが #NUM! | 結果の日付がExcelの上限(9999/12/31)超 | 月数の引数を見直す |
| DATEDIF(“M”)の結果が直感とずれる | 月末日の扱いに注意(30日と31日の差) | "YM" と組み合わせて検証 |
| 年度の数式で4月1日が前年度になる | >=4 ではなく >4 になっている | 比較演算子を確認 |
文字列日付に潜む落とし穴
CSVをコピペした日付は、見た目は日付でも実は文字列ということがよくあります。
=ISNUMBER(A2)で判定して、FALSE なら DATEVALUE で数値(シリアル値)に変換してから計算しましょう。文字列のまま引き算すると#VALUE!エラーになります。
よくある質問
日付計算関数についてよく寄せられる質問にお答えします。
Q1. DATEDIF関数を使ってもいいのですか?
年齢計算("Y" 単位)や月数計算("M" 単位)であれば、実務で安心して使えます。Microsoftの公式ドキュメントにも掲載されている正規の関数です。ただし "MD" 単位だけは結果が不正確になることがあるので、「○年○ヶ月○日」と表示したい場合は引き算で日数を別途求める方法も検討してください。
Q2. 「今日時点で何日後か」を自動で更新するには?
TODAY関数と組み合わせます。=A2-TODAY() で「A2の日付まであと何日か」、=NETWORKDAYS(TODAY(),A2) で「あと何営業日か」が求まります。TODAY は開いた日に再計算されるので、ブックを開くたびに自動更新されますよ。
Q3. 土日祝日を除いた日数を数えるには?
NETWORKDAYS関数を使い、第3引数に祝日リストを指定します。=NETWORKDAYS(A2,B2,祝日!$A$2:$A$50) のように別シートで祝日を管理すると、毎年の更新が楽になります。
Q4. 月末日と翌月の同日、どちらを使うべき?
支払条件が「月末締め」ならEOMONTH関数、「契約日から N ヶ月後」ならEDATE関数を使います。EOMONTHは必ず月末日(30日・31日・28日・29日)を返し、EDATEは元の日にちを保ったまま月だけ進めます。
Q5. 年度の開始月が4月以外でも対応できますか?
はい、IF関数の比較条件を変えれば対応できます。10月始まりなら =IF(MONTH(A2)>=10,YEAR(A2),YEAR(A2)-1)、7月始まりなら =IF(MONTH(A2)>=7,YEAR(A2),YEAR(A2)-1) です。海外子会社や学校・自治体で使う場合は要チェックです。
Q6. 日付の引き算と DAYS 関数、どちらを使うべき?
普段の業務ではどちらでも問題ありません。文字列の日付(”2026/4/1″ のようなテキスト)を扱う場面では DAYS関数 のほうが安全です。シンプルさ重視なら引き算、データの形式が不確実なら DAYS と覚えておきましょう。
Q7. 日付計算の結果が1日ずれることがあります
NETWORKDAYS は「両端を含む」、引き算は「終了日のみ含む(開始日は含まない)」など、関数ごとにカウントの仕方が異なります。たとえば「4/1から4/3」を NETWORKDAYS は3日、引き算は2日と返します。実務で扱うときは、どちらの解釈が必要かを意識して関数を選んでください。
Excel日付計算の関数一覧と比較表
ここまで紹介した関数を含めて、日付計算で使う主要な関数を一覧にまとめました。
| 関数名 | 機能 | 構文 | 主な用途 |
|---|---|---|---|
| DATEDIF | 期間の年数・月数・日数 | =DATEDIF(開始日,終了日,単位) | 年齢計算・在籍期間 |
| YEARFRAC | 期間の年数(小数) | =YEARFRAC(開始日,終了日,基準) | 利息計算・勤続年数 |
| DAYS | 2つの日付間の日数 | =DAYS(終了日,開始日) | 経過日数 |
| DAYS360 | 360日基準の日数 | =DAYS360(開始日,終了日,方式) | 会計計算 |
| NETWORKDAYS | 営業日数 | =NETWORKDAYS(開始日,終了日,祝日) | 稼働日計算 |
| NETWORKDAYS.INTL | 営業日数(カスタム休日) | =NETWORKDAYS.INTL(開始日,終了日,パターン,祝日) | 変則シフトの稼働日 |
| WORKDAY | N 営業日後の日付 | =WORKDAY(開始日,日数,祝日) | 納期計算 |
| EOMONTH | 月末日 | =EOMONTH(開始日,月数) | 支払期日・締め日 |
| EDATE | N ヶ月後の同日 | =EDATE(開始日,月数) | 契約更新日 |
| YEAR | 年を取り出す | =YEAR(日付) | 年度判定 |
| MONTH | 月を取り出す | =MONTH(日付) | 月別集計 |
| DAY | 日を取り出す | =DAY(日付) | 月末日判定 |
| WEEKDAY | 曜日番号を返す | =WEEKDAY(日付,種類) | 曜日判定 |
| TODAY | 今日の日付 | =TODAY() | 年齢計算の基準日 |
| DATE | 年・月・日から日付を作成 | =DATE(年,月,日) | 日付の組み立て |
| DATEVALUE | 文字列を日付に変換 | =DATEVALUE(文字列) | データ取り込み |
この表をブックマークしておけば、日付計算で迷ったときにすぐ確認できます。
まとめ
Excelの日付計算は、場面に応じて最適な関数を選ぶのがポイントです。最後にもう一度、使い分けをおさらいしましょう。
- 年齢を求める → DATEDIF関数(
"Y"単位)が最もシンプル - 日数を数える → 日付の引き算が基本。営業日ならNETWORKDAYS関数
- 月末日を求める → EOMONTH関数一択
- N ヶ月後の同日を求める → EDATE関数
- 年度を判定する → YEAR関数+IF関数で
=IF(MONTH(A2)>=4,YEAR(A2),YEAR(A2)-1)
迷ったときの判断は次の2ステップです。
- 期間を計算したい? → DATEDIF / 引き算 / NETWORKDAYS
- 特定の日付がほしい? → EOMONTH / EDATE / WORKDAY
DATEDIF関数は非公式サポートですが、年齢計算("Y" 単位)と月数計算("M" 単位)では問題なく動作します。気になる方は代替策(YEAR+IF、YEARFRAC+INT)も活用してください。
まずは自分の業務でよく使うパターンから試してみてください。一度数式を組んでしまえば、日付が変わるたびに手計算する必要がなくなりますよ。
関連記事
日付関数の個別解説も合わせてチェックしてみてください。
