Excelで締切日を自動入力する方法|カテゴリ/Tier別に営業日で期限を計算(WORKDAY)

ExcelでカテゴリとTierをドロップダウン選択し、担当日を入れるだけで「土日+祝日を除外した締切日(Deadline)」まで自動入力できると、管理表の精度と作業効率が一気に上がります。本記事では、WORKDAY関数を軸に、Tierがあるケース/N/Aのケースを切り替えて営業日で期限を算出する方法を、参照表の作り方からエラー対策までまとめて解説します。

目次

Excelで「カテゴリ/Tier別の締切日」を営業日で自動計算する全体像

今回の要件はシンプルに見えて、実務ではミスが起きやすいポイントが複数あります。特に「締切が営業日ベース」「Tierがある行と無い行が混在」「祝日(Bank Holiday)が年ごとに変わる」という3点が、手入力運用だと破綻しやすい部分です。

実現したい動きは次のとおりです。

  • メイン表で カテゴリ と Tier をドロップダウンで選択する
  • Date Assigned(受付日/担当日) を入力する
  • 別シートの参照表から「必要な営業日数(Days)」を引き当てる
  • WORKDAY関数で、土日と祝日を除外して Deadline(締切日) を算出する

具体例として、次のようなルールを想定します。

  • ASC Complaints は Tier 2 → Date Assigned から 35営業日後 が締切
  • CSC Stage 2 は Tier が不要(N/A)→ カテゴリに定義された 25営業日後 が締切
  • 土日と祝日(Bank Holiday)はカウントから除外

事前に用意するシートと参照表

仕組みを安定させるコツは、メイン表の「入力」と、締切計算の「ルール(参照表)」を分離することです。メイン表の計算式は極力1本にして、ルール変更は参照表を更新するだけで反映できる状態を目指します。

シート構成例

シート名役割主な列
Main入力・一覧(計算結果もここに出す)Category / Tier / Date Assigned / Deadline など
LookupTableTier・カテゴリ別の営業日数の参照表Tier / Days、Category / Days
BankHolidays祝日リスト(Excel日付)Holiday Date

参照表の作り方(サンプル)

参照表はExcelの「テーブル(Ctrl+T)」化しておくと、範囲ズレが起きにくく、行追加にも強くなります。ここでは説明のために固定範囲(A2:B4など)でも書きますが、運用ではテーブル化を推奨します。

Tier別の営業日数(例)

TierDays(営業日数)用途
Tier 120Tierで締切が決まる案件
Tier 235ASC Complaints など
Tier 360例:長期対応が許容される案件

カテゴリ別の営業日数(例)

CategoryDays(営業日数)Tier
CSC Stage 110N/A
CSC Stage 225N/A
ASC Complaints(カテゴリではなくTierで決める)Tier 1〜3

祝日(Bank Holiday)リスト(例)

祝日は「見た目が日付」ではなく、Excel内部で日付として認識されている必要があります。入力は1列にまとめ、空白行は作らないのが安定します。

Holiday Dateメモ(任意)
2026/01/01New Year’s Day
2026/04/03Bank Holiday
2026/12/25Christmas Day

ドロップダウン(データ検証)の運用ポイント

カテゴリとTierをデータ検証で選ばせる運用は、入力揺れ(表記ブレ)を抑えるのに非常に有効です。ただし、締切の自動計算を安定させるために、次の点を最初にルール化しておくと後で詰まりにくくなります。

  • Tierが不要なカテゴリは、Tier欄に N/A を必ず入れる(空欄にしない)
  • ドロップダウンの選択肢は、参照表の値と 完全一致させる(全角/半角、余計なスペースを混ぜない)
  • カテゴリやTierの名称変更が起きる可能性があるなら、参照表側もテーブル化して一元管理する

基本の解決策:WORKDAY + VLOOKUPでDeadlineを自動入力(互換性重視)

まずは、多くの環境で動く「VLOOKUP版」の代表例です。想定するセルは次のとおりです。

  • A2:カテゴリ(Category)
  • B2:Tier
  • C2:Date Assigned(開始日)
  • D2:Deadline(締切日)

そして参照表は、例として以下の位置にある想定で書きます。

  • Tierの表:LookupTable!A2:B4(A列=Tier、B列=Days)
  • カテゴリの表:LookupTable!C5:D12(C列=Category、D列=Days)
  • 祝日:BankHolidays!A2:A11

Deadline(D2)の式は、次の形になります。

=IF(B2<>"N/A",
    WORKDAY(C2, VLOOKUP(B2, LookupTable!A$2:B$4, 2, FALSE), BankHolidays!A$2:A$11),
    WORKDAY(C2, VLOOKUP(A2, LookupTable!C$5:D$12, 2, FALSE), BankHolidays!A$2:A$11)
)

式の意味を分解して理解する

この式の設計ポイントは2つだけです。

ポイントやっていることなぜ必要か
Tierの有無で分岐IF(B2<>”N/A”, Tier側, カテゴリ側)同じ列で「Tierあり/なし」が混在しても1本の式で処理できる
営業日で締切を計算WORKDAY(開始日, 日数, 祝日範囲)土日と祝日を自動的に除外して日付を返せる

VLOOKUPは「Days(営業日数)」を参照表から引く役割です。WORKDAYは「開始日から営業日を足した締切日」を返す役割です。この2つをつなぐだけで、手計算や手入力をやめられます。

運用を壊さないための“実務版”チェック

数式が正しくても、データ側の状態によってはエラーになります。実務で詰まりやすいのは、ほぼ次の3種類です。

Date Assignedが“文字列”になっている

見た目が「2026/1/10」でも、Excelが文字として扱っているとWORKDAYが正しく計算できません。次の症状が出やすいです。

  • #VALUE! が出る
  • 日付の足し算ができない(=C2+1 がエラー)
  • 左揃え表示になりやすい(設定によっては当てにならない)

対処の代表例は次のとおりです。

  • セルの書式設定を「日付」にするだけで直らない場合は、データ → 区切り位置で日付に変換する
  • 文字列日付なら、別セルで =DATEVALUE(C2) を使って変換し、値貼り付けで置き換える

祝日リストが日付として揃っていない

祝日リストに空白が混ざっていたり、文字列や時刻付き(例:2026/1/1 0:00)が混ざっていると、祝日除外が効かなかったり、想定外の結果になります。次のルールで揃えると安定します。

  • 祝日列は「日付だけ」の1列にする
  • 空白行を作らない(必要ならテーブル化して行追加する)
  • 年をまたぐ運用なら、翌年分の祝日も早めに追加する

ドロップダウンの値と参照表が一致していない

参照表の「Tier 2」と、入力側の「Tier 2 」のように末尾スペースが入るだけで、VLOOKUPは一致しません。Excelは見た目で気づけないため、地味に時間を溶かします。

入力揺れ対策として、数式側で TRIM をかませるのが有効です(前後のスペースを除去)。

さらに安定させる:空欄・未登録を考慮したVLOOKUP版(実務向け)

メイン表でDate Assignedが未入力の行にまで式がコピーされていると、エラー表示が増えます。また、参照表に未登録のカテゴリ/Tierが選ばれたときに #N/A が出るのも見栄えが悪く、運用トラブルの原因になります。

そこで、次の3点を追加すると現場運用がかなりラクになります。

  • Date Assignedが空なら空欄を返す
  • 参照表に見つからない場合も空欄(またはメッセージ)を返す
  • TRIMで余計なスペースを除去して検索する

例:D2(Deadline)の式(読みやすさのため改行しています)

=IF(C2="","",
  IF(B2<>"N/A",
    IFERROR(WORKDAY(C2, VLOOKUP(TRIM(B2), LookupTable!A$2:B$4, 2, FALSE), BankHolidays!A$2:A$11),""),
    IFERROR(WORKDAY(C2, VLOOKUP(TRIM(A2), LookupTable!C$5:D$12, 2, FALSE), BankHolidays!A$2:A$11),"")
  )
)

「空欄で返す」以外にも、運用ポリシーによっては、未登録時に “要マスタ更新” のような文言を返すのもアリです。監査やデータ整備の観点では、空欄より気づきやすくなります。

Excel 365ならXLOOKUP+LETで“壊れにくく読みやすい”式にする

Excel 365が使える環境なら、VLOOKUPよりもXLOOKUPの方が参照範囲ズレに強く、列順の変更にも耐えます。さらにLETを組み合わせると、同じ参照を何度も書かずに済み、式の保守性が上がります。

ここからは、参照表とメイン表をテーブル化している前提の書き方を紹介します。

テーブル名(例)

  • メイン表:MainTable(列:Category / Tier / Date Assigned / Deadline)
  • Tier参照表:TierTable(列:Tier / Days)
  • カテゴリ参照表:CategoryTable(列:Category / Days)
  • 祝日リスト:HolidaysTable(列:Holiday Date)

Deadline列(例:MainTableの[Deadline])に入れる式は次のイメージです。

=LET(
  cat, TRIM([@Category]),
  tier, TRIM([@Tier]),
  start, [@[Date Assigned]],
  hol, HolidaysTable[Holiday Date],
  tierDays, XLOOKUP(tier, TierTable[Tier], TierTable[Days], ""),
  catDays, XLOOKUP(cat, CategoryTable[Category], CategoryTable[Days], ""),
  days, IF(tier<>"N/A", tierDays, catDays),
  IF(start="","", IF(days="","", WORKDAY(start, days, hol)))
)

この形にしておくと、参照表の列を増やしたり、順番を入れ替えても式が崩れにくくなります。さらに、変数名(cat / tier / days)があることで、後から見返したときに「何をしている式か」がすぐ分かります。

“1日ズレ”を防ぐために知っておきたいWORKDAYの数え方

締切計算でよく起きる混乱が「開始日を0日として翌営業日から数えるのか」「開始日を1日目として数えるのか」です。WORKDAYは原則として、開始日に営業日数を加算し、土日祝を避けて着地日を返します。

たとえば、開始日が月曜日で、Daysが1の場合、締切は通常「翌営業日(火曜日)」になります。開始日を“1日目”として数えたい運用(当日を含める運用)だと、ここで1日ズレたように見えます。

ズレが疑われる場合は、まず運用ルールを言語化してください。次のどちらかで整理するとブレが減ります。

数え方考え方式の調整例
当日を0日翌営業日からカウント開始(WORKDAY標準に近い)WORKDAY(start, days, hol)
当日を1日開始日が営業日なら当日を1日目として扱う開始日を補正(例:days-1 など)

「当日が営業日なら当日を1日目」とする場合の簡易補正例(startが営業日である前提)は、次のように営業日数を1減らす方法です。

=WORKDAY(C2, days-1, BankHolidays!A$2:A$11)

ただし、開始日が土日や祝日の場合も考慮するなら、補正を入れる位置が変わります。まずは「現行の手計算とWORKDAY結果の差がどの条件で出るか」を2〜3ケースで比較し、運用ルールを確定するのが安全です。

土日以外を休みにしたい場合はWORKDAY.INTLを使う

基本のWORKDAYは週末を土日として扱います。もし「金土休み」「日曜だけ休み」「シフトで週末が変動」などの条件がある場合は、WORKDAY.INTLを使うと柔軟に指定できます。

例:週末が金曜・土曜(Sunday〜Thursdayが稼働)の場合

=WORKDAY.INTL(C2, days, "0000110", BankHolidays!A$2:A$11)

文字列の0/1は、月曜から日曜の順に「0=営業日」「1=休日」を表します。運用に合う週末設定ができるかどうかは、グローバル拠点やカレンダーが混ざる表ほど重要になります。

実務で強い設計にするコツ(表の作り込み)

締切の自動入力は数式だけで完成ではありません。現場で長く使う表にするなら、更新・追加・引き継ぎを意識した“壊れにくい形”にしておくと、後からの保守コストが激減します。

メイン表はExcelテーブル化して、列名で参照する

メイン表をCtrl+Tでテーブル化すると、次のメリットがあります。

  • 新しい行を追加しても、締切の式が自動で下までコピーされる
  • フィルターや集計がやりやすい
  • 構造化参照([@Tier]など)で、セル番地より読みやすい式になる

参照表は「変更される前提」で作る

Tierやカテゴリの締切ルールは、監査や業務設計の変更で見直されることがあります。そこで参照表は、次のような列を追加しておくと運用が強くなります(必須ではありません)。

追加列例内容メリット
Effective From適用開始日ルール変更の履歴を残せる
Ownerルール管理者問い合わせ先が明確になる
Notes補足「なぜこの日数か」を残せる

将来的に「期間によって日数が変わる」要件が出る場合は、XLOOKUPだけでなく、FILTERやIFSを使った条件分岐(有効期間での抽出)に拡張しやすくなります。

締切管理に役立つ“ついで”の便利技

締切日が自動入力できるようになると、次にやりたくなるのが「遅延の見える化」と「リードタイム分析」です。ここは現場で効くので、併せて仕込んでおくと価値が上がります。

遅延を色で強調する(条件付き書式)

例:Deadlineが今日より前、かつステータスが完了でない場合に赤くする、といった条件付き書式を入れておくと、未対応が一瞬で分かります。

  • 条件例:=AND($D2<TODAY(), $E2<>”Closed”)
  • 対象範囲例:Deadline列または行全体

実績の営業日数を出して、見積もり精度を上げる

「受付日→完了日」までの実績営業日数は、NETWORKDAYS関数で求められます。締切日(予定)と完了日(実績)を並べておくと、Tierやカテゴリごとの難易度が見えるようになります。

=NETWORKDAYS([@[Date Assigned]], [@[Closed Date]], HolidaysTable[Holiday Date])

よくあるつまずきと解決策(原因別)

最後に、実務で問い合わせが多いポイントを「原因→対処」で整理します。ここを押さえておくと、表を引き継いだ人でも詰まりにくくなります。

エラー表示が出る(#N/A / #VALUE!)

  • #N/A:参照表に値がない、表記が一致していない → TRIMで整形、参照表の登録漏れを確認、IFERRORでメッセージ化
  • #VALUE!:Date Assignedが日付として認識されていない → 日付変換(DATEVALUE、区切り位置)

祝日が除外されない

  • 祝日が文字列になっている → 日付形式に変換
  • 祝日範囲がズレている → 絶対参照($)を付ける、テーブル参照にする
  • 祝日リストに時刻が混ざっている → 時刻を消して日付に統一

参照表を増やしたら式が壊れた

  • VLOOKUPは「列番号」で参照するため、列の挿入に弱い → XLOOKUPに移行する
  • 固定範囲を手で伸ばしていて漏れた → テーブル化して自動拡張にする

Excelの環境によって式の区切りが違う

Excelは地域設定によって引数の区切りが「,(カンマ)」ではなく「;(セミコロン)」の場合があります。式がそのまま入らない場合は、区切り文字を置き換えて試してください。

まとめ:WORKDAYで“営業日締切”を自動化すると管理が回り始める

カテゴリ/Tierのどちらで日数を決めるかを明確にし、祝日リストを渡したWORKDAYで締切日を計算すれば、締切入力の手作業をほぼゼロにできます。特に、ドロップダウン運用+参照表分離+テーブル化までやっておくと、ルール変更やデータ追加にも強い締切管理表になります。

まずはVLOOKUP版で動く形を作り、可能ならXLOOKUP+LET版へ移行して保守性を上げる、という順番が失敗しにくい進め方です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次