Step 39:日付・時刻関数

📅 Step 39: 日付・時刻関数

TODAY/NOW/DATE/DATEDIF/WEEKDAY/EOMONTHをマスターしよう!

📋 このステップで学ぶこと

  • 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()は自動更新されるため、固定したい場合は:
  1. セルをコピー(Ctrl+C)
  2. 右クリック → 形式を選択して貼り付け → 値
または、最初から直接日付を入力します(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、など)
📝

学習メモ

Excel・Googleスプレッドシート完全マスター - Step 39

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE