【完全ガイド】Excelの日付・時刻関数

ソニック

事務職の定番テクニックを徹底解説

「生徒の年齢を1人ずつ電卓で計算している」「契約期限切れに気付かず、上司に怒られた」

そんな経験、事務職の方なら一度はあるはずです。

学校事務員時代の私もそうでした。生徒300人の年齢を電卓で計算したり、書類の提出期限を手動で管理したり……それが、Excelの日付関数を覚えてから一変しました。

電卓で30分かかっていた年齢計算が、関数1秒で完了。期限管理の漏れもゼロに。

日付関数は、事務職の業務時間を劇的に変える「魔法のツール」です。

この記事では、Excelの日付・時刻関数の基本から実務テクニックまで、コピペで使えるサンプル付きで完全解説します。

目次

こんな方におすすめ

  • 年齢計算・期間計算を毎月のように手作業でやっている事務職の方
  • 契約期限・支払期日の管理を効率化したいバックオフィスの方
  • Excelスキルをもう一段階レベルアップさせたい方

第1章|事務職にとって日付関数が必修な理由

こんな業務に日付関数は使える

私自身、学校事務員時代に日付関数を毎日のように使っていました。具体的には:

  • 生徒300人の年齢を年度開始時点で一括計算
  • 就学支援金の申請期限を自動判定
  • 保護者からの書類提出期限の進捗管理
  • 給与計算における勤務日数・有給残日数の集計
  • 契約書の更新期日リマインダー

Before/After|日付関数の威力

業務Before(手作業)After(関数活用)
300人の年齢計算30分1秒
期限切れの判定目視で見落とし発生自動でアラート表示
勤務日数の集計カレンダーを数える関数1つで自動
年度跨ぎの日付管理毎年作り直し自動で更新

第2章|基本|TODAY/NOW/DATE関数

TODAY関数|今日の日付を自動表示

最も基本的で、最もよく使うのがTODAY関数。今日の日付を自動で表示してくれます。

=TODAY()

結果:2026/06/04(実行した日が表示される)

実務での使い方

  • 資料の作成日を自動表示(毎回入力不要)
  • 「今日からの経過日数」計算の基準点
  • 期限管理の基準日(後述)

※TODAY()は、Excelファイルを開くたびに自動更新されます。「資料作成日」を固定したい場合は、Ctrl + ; で固定日付を入力します。

NOW関数|現在の日時を表示

=NOW()

結果:2026/06/04 14:30(日付+時刻)

打刻記録・ログ管理など、時刻まで必要な場合に使います。

DATE関数|年・月・日から日付を組み立てる

=DATE(年, 月, 日)
=DATE(2026, 4, 1)

実務での使い方

「年度開始日(4月1日)」「月末日」など、計算で動的に日付を作るときに使います。

# A1セルに年(例:2026)が入っているとき
=DATE(A1, 4, 1)
=DATE(A1+1, 3, 31)

第3章|年齢・期間計算|DATEDIF関数の使い方

DATEDIF関数|事務職の最重要関数

**DATEDIF(デイトディフ)は、事務職にとって最も使用頻度が高い関数の1つ**。2つの日付の「年数」「月数」「日数」を一発で計算してくれます。

基本構文

=DATEDIF(開始日, 終了日, 単位)

単位の指定(重要)

単位意味使用例
“Y”満年数年齢計算
“M”満月数勤続月数
“D”満日数経過日数
“YM”年を除いた月数「X年Y月」のY部分
“MD”月を除いた日数「X年Y月Z日」のZ部分

実例1|年齢を計算する

A1セルに生年月日が入っているとき、今日時点の年齢を計算します。

=DATEDIF(A1, TODAY(), "Y")

結果:35(35歳)

実例2|勤続年数を「X年Yヶ月」形式で表示

=DATEDIF(入社日, TODAY(), "Y") & "年" & DATEDIF(入社日, TODAY(), "YM") & "ヶ月"

結果:「5年3ヶ月」(人事資料での定番表記)

実例3|年度開始日時点での年齢を計算

学校事務では「年度初日時点での年齢」が必要です。

# A1に生年月日、年度=2026年度の場合
=DATEDIF(A1, DATE(2026,4,1), "Y")

# A1に生年月日、年度=2026年度の場合 =DATEDIF(A1, DATE(2026,4,1), “Y”)

第4章|日付の操作|YEAR/MONTH/DAY/WEEKDAY

YEAR/MONTH/DAY関数|日付から年・月・日を取り出す

=YEAR(A1)   → 2026(年だけ取り出す)
=MONTH(A1)  → 6(月だけ取り出す)
=DAY(A1)    → 4(日だけ取り出す)

実務での使い方

  • 売上データから「月別集計」用の月列を作る
  • 「生まれ年だけ抽出して集計」する
  • グラフのX軸ラベル用にデータを加工

WEEKDAY関数|曜日を判定

=WEEKDAY(A1, 2)
# 第2引数を「2」にすると、月曜=1、火曜=2、…、日曜=7

曜日名を日本語で表示する

=CHOOSE(WEEKDAY(A1,2), "月", "火", "水", "木", "金", "土", "日")

結果:「水」(A1が水曜日の場合)

※TEXT関数を使えばより簡単に表示できます:

=TEXT(A1, "aaa") → 水

第5章|期限管理|EDATE/EOMONTH

EDATE関数|Xヶ月後の日付を計算

=EDATE(開始日, 月数)

実例|3ヶ月後の支払期日を計算

# A1に契約日が入っているとき、3ヶ月後の支払期日
=EDATE(A1, 3)

結果:契約日の3ヶ月後の日付(自動計算)

EOMONTH関数|月末日を計算

=EOMONTH(開始日, 月数)

実例|今月末を取得

=EOMONTH(TODAY(), 0)
# 「0」は「今月」、「1」なら「来月末」、「-1」なら「先月末」

結果:今月の月末日(2026/06/30など)

実例|請求書の支払期限を「翌月末」に設定

# A1に請求日が入っているとき
=EOMONTH(A1, 1)

結果:請求日の翌月末日(経理業務の定番)

第6章|営業日計算|WORKDAY/NETWORKDAYS

WORKDAY関数|営業日換算でX日後の日付

=WORKDAY(開始日, 日数, [祝日リスト])

土日を除外して、指定日数後の日付を返します。

実例|5営業日後の納期を計算

# 今日から5営業日後
=WORKDAY(TODAY(), 5)

結果:今日から5営業日後の日付(土日を除く)

祝日リストを反映する

# 祝日リスト(H1:H20)を反映
=WORKDAY(TODAY(), 5, H1:H20)

祝日も除外して計算してくれます。

NETWORKDAYS関数|2つの日付間の営業日数

=NETWORKDAYS(開始日, 終了日, [祝日リスト])

実例|プロジェクトの所要営業日数

# A1=開始日、B1=終了日、H1:H20=祝日リスト
=NETWORKDAYS(A1, B1, H1:H20)

結果:開始日から終了日までの営業日数(土日祝を除く)

プロジェクト管理・工数計算・有給日数管理など、用途は無限大です。

第7章|実務テクニック|期限切れ自動判定・年齢一覧

テクニック1|期限切れを自動で色分け

「期限切れ」「期限間近」を一目で識別できる仕組みを作ります。

ステップ1:判定列を作る

B列に期限が入っているとき、C列に判定式を入力:

=IF(B2<TODAY(), "期限切れ", IF(B2-TODAY()<=7, "期限間近", "OK"))

ステップ2:条件付き書式で色分け

  1. 判定列を選択 →「ホーム」→「条件付き書式」→「セルの強調表示ルール」
  2. 「文字列」で「期限切れ」→赤背景
  3. 同じ手順で「期限間近」→黄背景

これで、期限管理表が**視覚的にすぐ把握できる**ダッシュボード化します。

テクニック2|年齢一覧表の自動生成

生徒・社員などの名簿で、年齢を自動表示する仕組み。

A列:氏名B列:生年月日C列:年齢(数式)
田中太郎1990/05/15=DATEDIF(B2,TODAY(),”Y”)
佐藤花子1985/12/20=DATEDIF(B3,TODAY(),”Y”)

数式を下にドラッグすれば、全員の年齢が自動で計算されます。来年見ても、自動で年齢が更新されているのが最大のメリット。

テクニック3|契約更新リマインダー

契約更新日が近づいたら通知する仕組み。

=IF(EDATE(契約日,12)-TODAY()<=30, "更新時期です", "")

契約日から12ヶ月後(次の更新日)が30日以内に迫ったら、「更新時期です」と表示されます。

第8章|つまずき対処&まとめ

よくあるトラブル

トラブル1:日付がシリアル値(数字)で表示される

原因:

セルの書式が「標準」になっている。

対処:

セルを右クリック →「セルの書式設定」→「日付」を選択。

トラブル2:DATEDIFがエラーになる

原因:

「開始日 > 終了日」になっている、または日付が文字列として認識されている。

対処:

開始日と終了日の順序を確認。日付が文字列の場合は、データの区切り位置機能で日付型に変換します。

トラブル3:WORKDAYで祝日が反映されない

対処:

内閣府の「国民の祝日」CSVをExcelに貼り付け、祝日リストとして第3引数に指定します。

トラブル4:TODAY()が更新されない

原因:

「計算方法」が「手動」になっている。

対処:

「数式」→「計算方法の設定」→「自動」に変更。または F9 で再計算。

この記事のまとめ

  • TODAY/NOW/DATEは「動く日付」を作る基本3関数
  • DATEDIFは事務職の最重要関数。年齢・期間計算が一発
  • EDATE/EOMONTHで期限管理を自動化
  • WORKDAY/NETWORKDAYSで営業日計算
  • 条件付き書式と組み合わせて、視覚的な期限管理ダッシュボードが作れる

FAQ

Q1. DATEDIFがExcelの関数一覧に出てきません

DATEDIFは「Lotus 1-2-3」との互換性のための関数で、Excelの関数一覧には表示されません。直接タイプして使う「隠し関数」です。動作は正常なので、安心して使えます。

Q2. 和暦(令和)で表示したい

セルの書式設定 → 「日付」 → カレンダーの種類で「和暦」を選択。または =TEXT(A1, “ggge年m月d日”) で「令和8年6月4日」と表示できます。

Q3. 日付の引き算ができません

両方が日付型になっているか確認してください。例:=B1-A1 で「日数差」が計算できます。年齢計算には DATEDIF が確実です。

Q4. 営業日計算で休日(土日以外)を考慮したい

WORKDAY.INTL関数を使うと、土日以外を休日として指定できます。例:=WORKDAY.INTL(A1, 5, 11) は「日曜のみ休日」として計算。

Q5. 数式が複雑になりすぎたら?

Excel関数で対応が難しい複雑な期日管理は、Pythonに移行すると劇的に楽になります。詳しくは別記事「Excel関数からPythonへ移行する最短ルート」をご覧ください。

次にやるべき3つの行動

  • **今すぐ**:自分の業務で「年齢計算」「期限管理」が必要な箇所をリストアップ
  • **今日中**:1つの業務で DATEDIF か EOMONTH を実際に使ってみる
  • **今週中**:複数の日付関数を組み合わせて、期限管理ダッシュボードを作る

一度仕組みを作れば、来年も再来年も自動で使い続けられます。日付関数は「業務の貯金」になる投資です。

日付関数で、事務の毎日が変わる

日付関数を使いこなせるかどうかで、事務職の業務時間は驚くほど変わります。電卓で計算していた時代に戻る必要はありません。

そして、Excelの日付関数で対応が難しくなったら、Pythonへのステップアップを検討してください。さらに広い世界が待っています。

最新の解説記事は、新着記事から順次公開しています。X(旧Twitter)でも更新情報を発信していますので、ぜひフォローしてください。

この記事を書いた人

ソニック|バックオフィス出身の業務効率化ブロガー。データサイエンス業務でクライアント向けレポートの可視化にseabornを日常的に活用。リアルな実体験をもとにしたノウハウを発信中。

→ 詳しいプロフィールはこちら→ はじめての方へ

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次