実用テク
日付関数 完全ガイド
日付関数 完全ガイド
TODAY・EOMONTH・WORKDAY・NETWORKDAYSを使いこなす
「今月末は何日?」「5営業日後はいつ?」「納期まで何日?」を関数で自動化する。日付を扱う現場では必須の関数群をまとめて解説する。
GASとの関係:new Date()・Utilities.formatDate()と対応
GASで new Date() が TODAY()に、Utilities.formatDate() がTEXT関数に対応します。スプレッドシートで日付ロジックを確認してからGASに移植する手順が確実です。
目次
日付関数の基本マップ
| 関数 | 何を返すか | 典型的な使いどころ |
|---|---|---|
| TODAY() | 今日の日付 | 期限チェック・経過日数計算 |
| NOW() | 今日の日時(時刻付き) | タイムスタンプ |
| DATE(年,月,日) | 指定した日付 | 日付の動的生成 |
| YEAR / MONTH / DAY | 年・月・日を取り出す | 日付の分解・グループ集計 |
| EOMONTH(日付, 月数) | 月末日 | 今月末・翌月末の取得 |
| EDATE(日付, 月数) | N ヶ月後の同じ日 | 契約更新日・定期日程 |
| WORKDAY(日付, 日数) | N 営業日後 | 納期・支払期限の計算 |
| NETWORKDAYS(開始, 終了) | 営業日数 | 作業日数・残営業日カウント |
| WEEKDAY(日付) | 曜日番号(1〜7) | 土日判定・スケジュール管理 |
| TEXT(日付, 書式) | 日付を文字列に変換 | レポートへの埋め込み |
TODAY・NOW の基本
=TODAY() // 今日の日付(時刻なし)
=NOW() // 今日の日時(時刻付き)
// 経過日数・残り日数
=TODAY() - A2 // A2の日付から今日まで何日経過したか
=A2 - TODAY() // A2の期限まであと何日
// 今日から30日後
=TODAY() + 30
TODAY()はシートを開くたびに更新されます。固定したい場合は Ctrl+; で今日の日付を「値」として入力します。
YEAR / MONTH / DAY — 日付を分解する
=YEAR(A2) // 年を取り出す(例: 2024)
=MONTH(A2) // 月を取り出す(例: 3)
=DAY(A2) // 日を取り出す(例: 15)
// 月ごとに集計するキー文字列を作る(SUMIFS の条件に使う)
=TEXT(A2, "yyyy-mm") // "2024-03" のような文字列
EOMONTH — 月末日を取得する
=EOMONTH(TODAY(), 0) // 今月末日
=EOMONTH(TODAY(), 1) // 翌月末日
=EOMONTH(TODAY(), -1) // 先月末日
=EOMONTH(DATE(2024,3,1), 0) // 2024年3月末日 → 2024/3/31
EDATE — N ヶ月後の同じ日
=EDATE(A2, 1) // A2の1ヶ月後(例: 2024/3/15 → 2024/4/15)
=EDATE(A2, 12) // 1年後(年単位の契約更新など)
=EDATE(A2, -3) // 3ヶ月前
WORKDAY — N 営業日後を計算する
=WORKDAY(TODAY(), 5) // 今日から5営業日後(土日除く)
=WORKDAY(TODAY(), 5, E2:E10) // 祝日リスト(E2:E10)も除外した5営業日後
第3引数に祝日リスト(日付の範囲)を指定すると、土日に加えて祝日も除外して計算します。
NETWORKDAYS — 営業日数を数える
=NETWORKDAYS(A2, B2) // A2〜B2間の営業日数(土日除く)
=NETWORKDAYS(TODAY(), C2) // 今日から期限日まで残り何営業日
=NETWORKDAYS(TODAY(), C2, 祝日リスト!A:A) // 祝日も除外
WEEKDAY — 曜日を判定する
=WEEKDAY(A2, 2) // 1=月, 2=火, ..., 7=日(第2引数2で月曜始まり)
=IF(WEEKDAY(A2, 2) >= 6, "休日", "平日") // 土日判定
// 曜日名を表示
=TEXT(A2, "ddd") // "Tue" (英語3文字)
=TEXT(A2, "dddd") // "Tuesday" (英語フル)
実務でよく使うパターン
パターン1:期限切れアラート
// 今日より前なら「期限切れ」、7日以内なら「要注意」
=IFS(C2
パターン2:月末締め請求書の期限を自動計算
// 当月末締め・翌月末払いの支払期限
=EOMONTH(A2, 1) // A2の月の翌月末
パターン3:今月のデータだけSUMIFS
=SUMIFS(
C2:C,
A2:A, ">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1),
A2:A, "<="&EOMONTH(TODAY(),0)
)
この知識をGASで活かす
GASでは new Date() が TODAY()に相当し、営業日計算には自分でロジックを書くか Calendar APIを使います。スプレッドシートでWORKDAY/NETWORKDAYSのロジックを確認してからGASに移植する手順が確実です。
Free Newsletter
AIを業務に活かしたいなら
SMR-Labメルマガ
毎週火曜10時、コピペで使えるChatGPTプロンプト・
GASテンプレートをお届け。登録は1分・完全無料。
