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 など |
| LookupTable | Tier・カテゴリ別の営業日数の参照表 | Tier / Days、Category / Days |
| BankHolidays | 祝日リスト(Excel日付) | Holiday Date |
参照表の作り方(サンプル)
参照表はExcelの「テーブル(Ctrl+T)」化しておくと、範囲ズレが起きにくく、行追加にも強くなります。ここでは説明のために固定範囲(A2:B4など)でも書きますが、運用ではテーブル化を推奨します。
Tier別の営業日数(例)
| Tier | Days(営業日数) | 用途 |
|---|---|---|
| Tier 1 | 20 | Tierで締切が決まる案件 |
| Tier 2 | 35 | ASC Complaints など |
| Tier 3 | 60 | 例:長期対応が許容される案件 |
カテゴリ別の営業日数(例)
| Category | Days(営業日数) | Tier |
|---|---|---|
| CSC Stage 1 | 10 | N/A |
| CSC Stage 2 | 25 | N/A |
| ASC Complaints | (カテゴリではなくTierで決める) | Tier 1〜3 |
祝日(Bank Holiday)リスト(例)
祝日は「見た目が日付」ではなく、Excel内部で日付として認識されている必要があります。入力は1列にまとめ、空白行は作らないのが安定します。
| Holiday Date | メモ(任意) |
|---|---|
| 2026/01/01 | New Year’s Day |
| 2026/04/03 | Bank Holiday |
| 2026/12/25 | Christmas 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版へ移行して保守性を上げる、という順番が失敗しにくい進め方です。

コメント