📋 このステップで学ぶこと
- TODAY/NOW関数(現在の日付・時刻)
- DATE関数(日付の作成)
- YEAR/MONTH/DAY関数(日付の分解)
- DATEDIF関数(期間計算)
- WEEKDAY関数(曜日の判定)
- EOMONTH関数(月末日の取得)
🎯 1. 日付・時刻関数の全体像
なぜ日付関数が必要なのか
ビジネスでは日付に関する計算がたくさんあります。「今日の日付を自動で表示したい」「期限までの残日数を計算したい」「社員の勤続年数を求めたい」など、手作業で計算すると大変です。日付関数を使えば、これらを自動で正確に計算できます。
🏠 日常生活に例えると…
カレンダーアプリのようなものです。
- TODAY:カレンダーで「今日」に印がついている
- DATEDIF:「誕生日まであと○日」を計算する
- WEEKDAY:「今日は何曜日?」を教えてくれる
- EOMONTH:「今月の最終日はいつ?」を教えてくれる
日付関数の一覧
| 関数名 |
機能 |
主な用途 |
| TODAY() |
今日の日付を取得 |
残日数計算、経過日数 |
| NOW() |
現在の日時を取得 |
タイムスタンプ、更新日時 |
| DATE() |
年月日から日付を作成 |
日付の計算、変換 |
| DATEDIF() |
期間を計算 |
年齢計算、勤続年数 |
| WEEKDAY() |
曜日を数値で取得 |
土日判定、カレンダー |
| EOMONTH() |
月末日を取得 |
支払日、締め日計算 |
📅 2. TODAY/NOW関数(現在の日付・時刻)
TODAY関数とNOW関数とは
TODAY関数とNOW関数は、現在の日付や時刻を自動で取得する関数です。ファイルを開くたびに自動で更新されます。
📝 基本の書き方(※横スクロールできます)
=TODAY()
→ 今日の日付を返す(時刻は含まない)
→ 例:2025/12/3
=NOW()
→ 今日の日付と現在の時刻を返す
→ 例:2025/12/3 14:30:45
【重要】
✓ どちらも引数なし(カッコの中は空)
✓ ファイルを開くたび、再計算するたびに更新される
TODAYとNOWの違い
📊 比較表(※横スクロールできます)
┌─────────────┬─────────────────────┬─────────────────────┐
│ │ TODAY() │ NOW() │
├─────────────┼─────────────────────┼─────────────────────┤
│ 戻り値 │ 日付のみ │ 日付と時刻 │
│ 例 │ 2025/12/3 │ 2025/12/3 14:30:45 │
│ 更新 │ 日付が変わると更新 │ 再計算のたびに更新 │
│ 用途 │ 期限計算、経過日数 │ タイムスタンプ │
│ 処理の軽さ │ 軽い │ やや重い │
└─────────────┴─────────────────────┴─────────────────────┘
【どちらを使う?】
→ ほとんどの場合 TODAY() で十分
→ 時刻まで必要な場合のみ NOW() を使用
TODAY/NOW関数の使用例
📊 実務での使い方(※横スクロールできます)
【例1】今日の日付を表示
=TODAY()
結果: 2025/12/3
【例2】現在の日時を表示
=NOW()
結果: 2025/12/3 14:30:45
【例3】期限までの残日数
期限日がB2セルに入力されている場合
=B2-TODAY()
例:B2が2025/12/31の場合
結果: 28(28日後が期限)
【例4】経過日数
開始日がA2セルに入力されている場合
=TODAY()-A2
例:A2が2025/11/1の場合
結果: 32(32日経過)
【例5】経過時間(時間単位)
開始日時がA2セルに入力されている場合
=(NOW()-A2)*24
結果: 5.5(5.5時間経過)
💡 日付同士の引き算で日数が計算できる!
🔑 日付を固定したい場合
TODAY()やNOW()は自動更新されるため、固定したい場合は:
- セルをコピー(Ctrl+C)
- 右クリック → 形式を選択して貼り付け → 値
または、最初から直接日付を入力します(2025/12/3)。
🔧 3. DATE関数(日付の作成)
DATE関数とは
DATE関数は、年・月・日を指定して日付を作成する関数です。バラバラの数値から日付を作ったり、日付の計算に使います。
📝 基本の書き方(※横スクロールできます)
=DATE(年, 月, 日)
【引数の説明】
年 :4桁の西暦(2025など)
月 :1〜12の数値
日 :1〜31の数値
【例】
=DATE(2025, 12, 25)
→ 2025/12/25(クリスマス)
=DATE(2025, 1, 1)
→ 2025/1/1(元日)
年・月・日を取り出す関数
📊 YEAR/MONTH/DAY関数(※横スクロールできます)
日付から年・月・日を個別に取り出す関数
【YEAR関数】年を取り出す
=YEAR(“2025/12/3”)
結果: 2025
【MONTH関数】月を取り出す
=MONTH(“2025/12/3”)
結果: 12
【DAY関数】日を取り出す
=DAY(“2025/12/3”)
結果: 3
【セル参照の場合】
A2セルに 2025/12/3 が入力されている場合
=YEAR(A2) → 2025
=MONTH(A2) → 12
=DAY(A2) → 3
DATE関数の活用例
📊 日付の計算(※横スクロールできます)
【例1】3ヶ月後の日付
=DATE(YEAR(TODAY()), MONTH(TODAY())+3, DAY(TODAY()))
解説:
・YEAR(TODAY()) → 今年(2025)
・MONTH(TODAY())+3 → 今月+3ヶ月(12+3=15 → 自動で翌年3月に)
・DAY(TODAY()) → 今日の日(3)
結果: 2026/3/3
【例2】来年の同じ日
=DATE(YEAR(TODAY())+1, MONTH(TODAY()), DAY(TODAY()))
結果: 2026/12/3
【例3】今月の1日
=DATE(YEAR(TODAY()), MONTH(TODAY()), 1)
結果: 2025/12/1
【例4】翌月の1日
=DATE(YEAR(TODAY()), MONTH(TODAY())+1, 1)
結果: 2026/1/1
💡 月が12を超えても、自動で翌年に繰り越される!
✅ DATE関数のポイント
- 月が13以上になると自動で翌年に繰り越し
- 日が月末を超えると自動で翌月に繰り越し
- YEAR/MONTH/DAY関数と組み合わせると便利
📊 4. DATEDIF関数(期間計算)
DATEDIF関数とは
DATEDIF関数は、2つの日付の間の期間を計算する関数です。年数、月数、日数を求められます。年齢計算や勤続年数の計算に便利です。
📝 基本の書き方(※横スクロールできます)
=DATEDIF(開始日, 終了日, 単位)
【引数の説明】
開始日 :期間の開始日
終了日 :期間の終了日
単位 :計算する単位(”Y”, “M”, “D”など)
【単位の種類】
“Y” :年数(満年齢)
“M” :月数(総月数)
“D” :日数(総日数)
“YM” :年を除いた月数(0〜11)
“YD” :年を除いた日数
“MD” :月を除いた日数(0〜30)
【例】
=DATEDIF(“2020/1/1”, “2025/12/3”, “Y”)
→ 5(5年経過)
単位の違いを理解する
📊 2020年1月1日 → 2025年12月3日の場合(※横スクロールできます)
【”Y” – 年数(満年齢)】
=DATEDIF(“2020/1/1”, “2025/12/3”, “Y”)
結果: 5年
【”M” – 総月数】
=DATEDIF(“2020/1/1”, “2025/12/3”, “M”)
結果: 71ヶ月
【”D” – 総日数】
=DATEDIF(“2020/1/1”, “2025/12/3”, “D”)
結果: 2163日
【”YM” – 年を除いた月数】
=DATEDIF(“2020/1/1”, “2025/12/3”, “YM”)
結果: 11ヶ月
(5年を引いた残りの月数)
【”MD” – 月を除いた日数】
=DATEDIF(“2020/1/1”, “2025/12/3”, “MD”)
結果: 2日
(月を引いた残りの日数)
【「5年11ヶ月2日」と表示するには】
=DATEDIF(A2,B2,”Y”)&”年”&DATEDIF(A2,B2,”YM”)&”ヶ月”&DATEDIF(A2,B2,”MD”)&”日”
DATEDIF関数の使用例
📊 実務での活用(※横スクロールできます)
【例1】年齢計算
生年月日: 1990/5/20
=DATEDIF(“1990/5/20”, TODAY(), “Y”)
結果: 35(歳)
【例2】年齢を「○歳○ヶ月」で表示
=DATEDIF(“1990/5/20”, TODAY(), “Y”)&”歳”&DATEDIF(“1990/5/20”, TODAY(), “YM”)&”ヶ月”
結果: 35歳6ヶ月
【例3】勤続年数
入社日: 2020/4/1
=DATEDIF(“2020/4/1”, TODAY(), “Y”)&”年”&DATEDIF(“2020/4/1”, TODAY(), “YM”)&”ヶ月”
結果: 5年8ヶ月
【例4】プロジェクトの経過月数
開始日: 2025/1/1
=DATEDIF(“2025/1/1”, TODAY(), “M”)
結果: 11(ヶ月)
⚠️ DATEDIF関数の注意点
- DATEDIF関数は隠し関数で、関数の入力候補に表示されません
- 手動で入力する必要があります
- 開始日 > 終了日の場合はエラーになります
- “MD”単位は一部の日付で誤差が出ることがあります
📆 5. WEEKDAY関数(曜日の判定)
WEEKDAY関数とは
WEEKDAY関数は、日付から曜日を数値で取得する関数です。土日判定やカレンダー作成に便利です。
📝 基本の書き方(※横スクロールできます)
=WEEKDAY(日付, 種類)
【引数の説明】
日付 :曜日を調べたい日付
種類 :数値の割り当て方(省略可)
【種類の指定】
1(省略可):日曜日が1、土曜日が7
2 :月曜日が1、日曜日が7
3 :月曜日が0、日曜日が6
【例】
=WEEKDAY(“2025/12/3”)
→ 4(水曜日)
WEEKDAY関数の戻り値
📊 種類ごとの数値(※横スクロールできます)
┌──────────┬─────────────┬──────────┬──────────┐
│ 曜日 │ 種類=1 │ 種類=2 │ 種類=3 │
│ │ (デフォルト)│ │ │
├──────────┼─────────────┼──────────┼──────────┤
│ 日曜日 │ 1 │ 7 │ 6 │
│ 月曜日 │ 2 │ 1 │ 0 │
│ 火曜日 │ 3 │ 2 │ 1 │
│ 水曜日 │ 4 │ 3 │ 2 │
│ 木曜日 │ 5 │ 4 │ 3 │
│ 金曜日 │ 6 │ 5 │ 4 │
│ 土曜日 │ 7 │ 6 │ 5 │
└──────────┴─────────────┴──────────┴──────────┘
【覚え方】
種類=1:日曜日スタート(アメリカ式)
種類=2:月曜日スタート(ヨーロッパ式)
WEEKDAY関数の使用例
📊 実務での活用(※横スクロールできます)
【例1】土日を判定
=IF(OR(WEEKDAY(A2)=1, WEEKDAY(A2)=7), “休日”, “平日”)
解説:
・WEEKDAY(A2)=1 → 日曜日
・WEEKDAY(A2)=7 → 土曜日
・どちらかがTRUEなら「休日」、それ以外は「平日」
【例2】曜日を日本語で表示(TEXT関数を使用)
=TEXT(A2, “aaa”)
結果: 月、火、水、木、金、土、日
=TEXT(A2, “aaaa”)
結果: 月曜日、火曜日、水曜日…
【例3】曜日を日本語で表示(CHOOSE関数を使用)
=CHOOSE(WEEKDAY(A2), “日”, “月”, “火”, “水”, “木”, “金”, “土”)
結果: 水
【例4】土日に色をつける(条件付き書式)
適用する数式:
=OR(WEEKDAY($A2)=1, WEEKDAY($A2)=7)
→ TRUE(土日)の場合、セルに背景色をつける
💡 TEXT関数で曜日を表示する書式
- “aaa” → 月、火、水…(短い形式)
- “aaaa” → 月曜日、火曜日…(長い形式)
- “ddd” → Mon、Tue、Wed…(英語短い)
- “dddd” → Monday、Tuesday…(英語長い)
📊 6. EOMONTH関数(月末日の取得)
EOMONTH関数とは
EOMONTH関数は、指定した月の最終日を取得する関数です。支払日や締め日の計算に便利です。EOMONTHは「End Of MONTH」の略です。
📝 基本の書き方(※横スクロールできます)
=EOMONTH(開始日, 月数)
【引数の説明】
開始日 :基準となる日付
月数 :何ヶ月後/前の月末か
0 → 当月の月末
1 → 翌月の月末
-1 → 前月の月末
【例】
=EOMONTH(“2025/12/3”, 0)
→ 2025/12/31(12月の最終日)
=EOMONTH(“2025/12/3”, 1)
→ 2026/1/31(1月の最終日)
EOMONTH関数で月末・月初を求める
📊 基準日: 2025年12月3日の場合(※横スクロールできます)
┌────────────┬─────────────────────┬────────────┐
│ 求めたい日 │ 数式 │ 結果 │
├────────────┼─────────────────────┼────────────┤
│ 前月末 │ EOMONTH(A2, -1) │ 2025/11/30 │
│ 今月初 │ EOMONTH(A2, -1)+1 │ 2025/12/1 │
│ 今月末 │ EOMONTH(A2, 0) │ 2025/12/31 │
│ 来月初 │ EOMONTH(A2, 0)+1 │ 2026/1/1 │
│ 来月末 │ EOMONTH(A2, 1) │ 2026/1/31 │
│ 3ヶ月後末 │ EOMONTH(A2, 3) │ 2026/3/31 │
└────────────┴─────────────────────┴────────────┘
【月初の求め方】
月初 = 前月末 + 1日
今月初 = EOMONTH(A2, -1) + 1
来月初 = EOMONTH(A2, 0) + 1
EOMONTH関数の使用例
📊 実務での活用(※横スクロールできます)
【例1】支払スケジュール(毎月末)
契約日: 2025/12/3
1回目支払日: =EOMONTH(“2025/12/3”, 0) → 2025/12/31
2回目支払日: =EOMONTH(“2025/12/3”, 1) → 2026/1/31
3回目支払日: =EOMONTH(“2025/12/3”, 2) → 2026/2/28
💡 2月も自動で28日(うるう年は29日)になる!
【例2】締め日から支払日を計算
締め日: 毎月25日
支払日: 翌月末
=EOMONTH(A2, 1)
例:A2が2025/12/25の場合
結果: 2026/1/31
【例3】今月の残り日数
=EOMONTH(TODAY(), 0) – TODAY()
結果: 28(12月31日まであと28日)
【例4】うるう年の判定
=IF(DAY(EOMONTH(DATE(A2,2,1),0))=29, “うるう年”, “平年”)
解説:
2月の月末が29日ならうるう年、28日なら平年
✅ EOMONTH関数のポイント
- うるう年も自動判定(2月の末日が正確)
- 月初は「前月末+1」で求める
- 支払スケジュール、締め日計算に最適
💼 7. 実務での活用例
例1:社員名簿(勤続年数と年齢)
📊 社員情報の自動計算(※横スクロールできます)
【データ】
A列 B列 C列 D列 E列
1 社員名 入社日 生年月日 勤続年数 年齢
2 田中太郎 2020/4/1 1990/5/20 ? ?
【D2セル:勤続年数】
=DATEDIF(B2, TODAY(), “Y”)&”年”&DATEDIF(B2, TODAY(), “YM”)&”ヶ月”
結果: 5年8ヶ月
【E2セル:年齢】
=DATEDIF(C2, TODAY(), “Y”)&”歳”
結果: 35歳
例2:プロジェクト管理(残日数と状態)
📊 期限管理の自動化(※横スクロールできます)
【データ】
A列 B列 C列 D列 E列
1 タスク名 開始日 期限 残日数 状態
2 資料作成 2025/11/1 2025/12/31 ? ?
【D2セル:残日数】
=C2-TODAY()
結果: 28
【E2セル:状態】
=IF(D2<0, "期限切れ", IF(D2<7, "要注意", "順調"))
結果: 順調
【解説】
・残日数がマイナス → 「期限切れ」
・残日数が7日未満 → 「要注意」
・それ以外 → 「順調」
例3:支払スケジュール表
📊 毎月末の支払日を自動計算(※横スクロールできます)
【データ】
A列 B列 C列
1 契約日 回数 支払日
2 2025/12/3 1 ?
3 2 ?
4 3 ?
【C2セル:1回目の支払日】
=EOMONTH($A$2, B2-1)
結果: 2025/12/31
【C3セル:2回目の支払日(C2をコピー)】
=EOMONTH($A$2, B3-1)
結果: 2026/1/31
【C4セル:3回目の支払日(C2をコピー)】
=EOMONTH($A$2, B4-1)
結果: 2026/2/28
💡 $A$2は絶対参照なので、コピーしても契約日は固定
📅 日付計算のコツ
- 日付 – 日付 = 日数
- 日付 + 数値 = 日付
- 月末 = EOMONTH(日付, 0)
- 月初 = EOMONTH(日付, -1)+1
⏰ 日付関数の選び方
- 今日の日付 → TODAY()
- 期間の計算 → DATEDIF()
- 曜日の判定 → WEEKDAY()
- 月末の取得 → EOMONTH()
📝 練習問題
練習 1
初級
TODAY関数を使って期限までの残日数を計算してください
期限日: 2025年12月31日
今日から期限までの残日数を求めてください
数式:
=DATE(2025,12,31)-TODAY()
または:
=”2025/12/31″-TODAY()
解説:
日付同士の引き算で日数が求められます。TODAY()は今日の日付を自動で取得するので、ファイルを開くたびに残日数が更新されます。
練習 2
中級
DATEDIF関数で年齢を「○歳○ヶ月」形式で表示してください
生年月日: 1990年5月20日
年齢を「35歳6ヶ月」のように表示してください
数式:
=DATEDIF(“1990/5/20″,TODAY(),”Y”)&”歳”&DATEDIF(“1990/5/20″,TODAY(),”YM”)&”ヶ月”
解説:
DATEDIF関数を2回使います。
– 1回目: “Y”で満年齢を取得
– 2回目: “YM”で年を除いた月数を取得
&演算子で文字列を結合して「○歳○ヶ月」の形式にします。
練習 3
上級
EOMONTH関数を使って12回払いの支払スケジュールを作成してください
契約日: 2025年12月3日
支払: 毎月末に12回払い
1回目から12回目までの支払日を求める数式を作成してください
1回目〜3回目の支払日:
=EOMONTH(“2025/12/3”, 0) → 2025/12/31
=EOMONTH(“2025/12/3”, 1) → 2026/1/31
=EOMONTH(“2025/12/3”, 2) → 2026/2/28
汎用的な数式(A2に契約日、B列に回数1〜12):
=EOMONTH($A$2, B2-1)
解説:
この数式をコピーすれば、自動で12回分の支払日が計算されます。$A$2は絶対参照なので契約日は固定、B2-1で回数に応じた月数を計算します。
📝 Step 39 のまとめ
✅ このステップで学んだこと
- TODAY/NOW:現在の日付・時刻を取得(引数なし)
- DATE:年月日から日付を作成
- YEAR/MONTH/DAY:日付から年・月・日を取り出す
- DATEDIF:2つの日付の期間を計算(隠し関数)
- WEEKDAY:曜日を数値で判定
- EOMONTH:月末日を取得
- 実務活用:年齢計算、勤続年数、支払スケジュール
🎯 次のステップの予告
日付・時刻関数をマスターしました!次のStep 40では、「配列数式とSPILL機能」を学びます。Excel 365の動的配列やGoogleスプレッドシートのARRAYFORMULAを習得します。
❓ よくある質問
Q1: TODAY()とNOW()はどちらを使うべきですか?
ほとんどの場合TODAY()で十分です。時刻まで必要な場合(タイムスタンプなど)のみNOW()を使います。NOW()は再計算のたびに更新されるため、ファイルが重くなる可能性があります。
Q2: 日付を固定したい場合はどうすればいいですか?
TODAY()やNOW()で取得した日付を値として貼り付けます:
1. セルをコピー(Ctrl+C)
2. 右クリック → 形式を選択して貼り付け → 値
または、最初から直接日付を入力します(2025/12/3)。
Q3: DATEDIF関数が関数候補に出てこないのはなぜですか?
DATEDIF関数は隠し関数のため、関数の入力候補に表示されません。手動で入力する必要があります。ただし、Googleスプレッドシートでは通常の関数として表示されます。
Q4: 曜日を日本語で表示するにはどうすればいいですか?
TEXT関数を使うのが簡単です:
=TEXT(A2, “aaa”) → 月、火、水…
=TEXT(A2, “aaaa”) → 月曜日、火曜日…
=TEXT(A2, “ddd”) → Mon、Tue、Wed…(英語)
Q5: 2月の末日を正しく取得できますか?
はい、EOMONTH関数はうるう年も自動判定します:
=EOMONTH(“2024/2/1”, 0) → 2024/2/29(うるう年)
=EOMONTH(“2025/2/1”, 0) → 2025/2/28(平年)
Q6: Googleスプレッドシートでも同じ関数が使えますか?
はい、すべての関数がGoogleスプレッドシートでも同じように使えます。構文も全く同じです。DATEDIFも通常の関数として使用できます。
Q7: 日付の表示形式を変更するにはどうすればいいですか?
セルの書式設定で変更できます:
1. セルを右クリック → セルの書式設定
2. 「表示形式」タブ → 「日付」を選択
3. 好みの形式を選択(例:2025年12月3日、12/3、など)
artnasekai
#artnasekai #学習メモ