「WORKDAY関数を使っているけど、うちは土曜が出勤日で日曜だけ休みなんだよな」――そんな悩みを解決してくれるのが WORKDAY.INTL関数 です。
標準のWORKDAY関数は「土曜・日曜が休日」という前提で動きますが、WORKDAY.INTLなら週の休日パターンを自分で指定できます。シフト制の職場や、海外拠点との連携など、柔軟な営業日計算が必要な場面にぴったりです。
この記事では、引数の意味から実務での活用例まで、ステップごとにわかりやすく解説します。
WORKDAY.INTL関数とは?
読み方と語源
「ワークデイ インターナショナル」と読みます。WORKDAY(営業日計算)に INTL(International=国際対応) が加わった関数で、国や業種によって異なる休日パターンに対応するために設計されました。
できること
開始日から 指定した稼働日数だけ前後の日付 を求めます。週末(非稼働日)の曜日パターンを自由に設定できる点が、通常のWORKDAY関数との最大の違いです。
- 土日以外の曜日を週末に設定できる
- 文字列コードで任意の曜日組み合わせを指定できる
- 祝日や特別休暇など、不定期の休日も除外できる
WORKDAY.INTL関数の書き方
基本構文
=WORKDAY.INTL( 開始日, 日数, [週末], [休日] )
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 開始日 | 必須 | 計算の起算日となる日付を指定します |
| 日数 | 必須 | 何稼働日前後の日付かを指定します。正の数で後、負の数で前 |
| 週末 | 任意 | 週末(非稼働日)とする曜日を番号または文字列で指定します(省略時は土日) |
| 休日 | 任意 | 週末以外に除外したい日付(祝日など)をセル範囲または配列で指定します |
「週末」引数の指定方法
番号で指定する方法
あらかじめ用意されている組み合わせ番号を使う方法です。
| 番号 | 非稼働日(週末)の曜日 |
|---|---|
| 1(省略時) | 土曜・日曜 |
| 2 | 日曜・月曜 |
| 3 | 月曜・火曜 |
| 4 | 火曜・水曜 |
| 5 | 水曜・木曜 |
| 6 | 木曜・金曜 |
| 7 | 金曜・土曜 |
| 11 | 日曜のみ |
| 12 | 月曜のみ |
| 13 | 火曜のみ |
| 14 | 水曜のみ |
| 15 | 木曜のみ |
| 16 | 金曜のみ |
| 17 | 土曜のみ |
文字列コードで指定する方法
番号の組み合わせにない休日パターンを使いたい場合は、7文字の文字列で指定できます。
文字列の構造:月火水木金土日の順番で、1(非稼働日)か 0(稼働日)を並べます。
"0000011" → 土曜と日曜が休み(通常の週末)
"1000001" → 月曜と日曜が休み
"0101000" → 火曜と木曜が休み
注意点:
- 必ず7文字で指定すること(6文字以下や8文字以上はエラー)
"1111111"のようにすべて非稼働日にするとエラー(#VALUE!)- 数値ではなく 文字列 として入力する(ダブルクォーテーションで囲む)
基本的な使い方
例1:30稼働日後の日付を求める(番号指定)
=WORKDAY.INTL("2024/4/1", 30, 1)
2024年4月1日から、土日を除いた30稼働日後の日付を返します。
例2:日曜・月曜が休みのパターンで計算する
=WORKDAY.INTL("2024/4/1", 20, 2)
番号「2」は日曜・月曜が週末です。コールセンターや小売業など、月曜が定休の職場に使えます。
例3:文字列コードで火・木を休みにする
=WORKDAY.INTL("2024/4/1", 15, "0101000")
火曜と木曜が非稼働日になります。
例4:セル参照を使ってデータを集約する
=WORKDAY.INTL(A2, B2, C2, D2:D20)
- A2:開始日
- B2:稼働日数
- C2:週末パターン番号
- D2:D20:祝日・特別休業日のリスト
実務では祝日を別シートにリスト化してセル範囲で参照する方法が管理しやすくおすすめです。
実務での活用例
活用例1:プロジェクトの納期計算
プロジェクト管理で「今日から20稼働日後の納期はいつ?」を自動計算したい場面です。
=WORKDAY.INTL(TODAY(), 20, 1, 祝日リスト)
祝日リストを別シートで管理しておけば、毎年更新するだけで全員が正確な納期を確認できます。スケジュール管理シートと組み合わせると、タスクの期日を一括で求めることもできます。
活用例2:シフト制職場の業務日計算
介護施設や飲食店など、土曜出勤・日曜休みのシフトに対応する場合。
=WORKDAY.INTL(開始日, 10, 11)
番号「11」は日曜のみ非稼働日です。日曜を除いた10業務日後の日付を簡単に求められます。
活用例3:海外拠点との納期調整
中東では金曜・土曜が休日の国があります(サウジアラビア・UAEなど)。
=WORKDAY.INTL(開始日, 5, 7)
番号「7」は金曜・土曜が週末です。現地の稼働日にあわせた納期計算ができるので、国際プロジェクトでも活躍します。
祝日リストの作り方と管理方法
WORKDAY.INTL関数の第4引数「祝日」を活用すると、土日以外の不定期な休みも除外できます。ここでは、その祝日リストを実務で楽に管理する方法を紹介します。
別シートに縦1列で並べるのが基本
祝日リストは、別シートに日付を縦1列で並べるのが最もシンプルで管理しやすい方法です。たとえば「祝日」シートのA列に、1月1日・1月13日…と祝日を順に入力します。
=WORKDAY.INTL(A2, B2, 1, 祝日!A2:A30)
日付は順不同でも、重複していても問題ありません。リストにある日付がすべて非稼働日として除外されます。
テーブル化すると範囲が自動で広がる
祝日リストをテーブル(Ctrl+Tで作成)にしておくと便利です。行を追加するだけで参照範囲が自動的に広がるため、毎年のメンテナンスが楽になります。
=WORKDAY.INTL(A2, B2, 1, 祝日テーブル[日付])
範囲を $D$2:$D$30 のように固定する手間がなくなり、リストの追記漏れも防げます。
内閣府の公式データを使うと正確
祝日の日付は、内閣府が公開している「国民の祝日」のCSVデータを使うと正確です。ハッピーマンデー制の祝日や春分・秋分の日は、年によって日付が変わります。そのため、自分で計算するより公式データを貼り付けるほうが確実です。
過去分・当年分・翌年分がまとめて配布されているので、年をまたぐ日程計算にも対応できます。祝日リストに翌年分まで入れておけば、年末の発注計算でも正しく祝日が除外されます。
NOTE:WEBSERVICE関数を使って祝日を自動取得する方法もありますが、外部サービスに依存し、再計算のたびに通信が発生します。安定して使いたい場合は、公式CSVを年に一度貼り付けて更新する方法がおすすめです。
祝日が除外されないときのチェックポイント
祝日リストを指定したのに除外されない場合は、日付が「文字列」になっていないか確認します。CSVから貼り付けた日付は文字列扱いになることがあります。セルが左揃えなら文字列、右揃えなら日付(数値)です。書式を「日付」に変更すると正しく除外されます。
WORKDAY関数との違い・使い分け
| 比較項目 | WORKDAY | WORKDAY.INTL |
|---|---|---|
| 対応バージョン | Excel 2007以降 | Excel 2010以降 |
| 週末パターン | 土日固定 | 自由に指定可能 |
| 文字列コード指定 | 不可 | 可能 |
| 引数の数 | 3つ(開始日・日数・休日) | 4つ(週末が追加) |
| 使いやすさ | シンプル | 引数がやや多め |
使い分けの目安:
- 土日休みの一般的な職場 → WORKDAY(シンプルで十分)
- シフト制・業種特有の休日パターンがある → WORKDAY.INTL
NETWORKDAYS.INTL関数も同じ「INTL」系で、こちらは2つの日付の間の稼働日数を数えるときに使います。セットで覚えておくと便利です。
NETWORKDAYS.INTL関数との使い分け
同じ「INTL系」の兄弟関数に、NETWORKDAYS.INTL関数があります。週末パターンと祝日の指定方法は共通ですが、求める答えがまったく違います。
| 関数 | 求めるもの | 結果の種類 | 第2引数 |
|---|---|---|---|
| WORKDAY.INTL | ○営業日後(前)の日付 | 日付 | 日数(増減) |
| NETWORKDAYS.INTL | 2つの日付の間の営業日数 | 日数(整数) | 終了日 |
使い分けはとてもシンプルです。「日付を知りたいか」「日数を知りたいか」で選びます。
- 「納期はいつ?」「20営業日後の出荷日は?」→ 日付を求める WORKDAY.INTL
- 「着手から完了まで何営業日?」「今月の稼働日は何日?」→ 日数を求める NETWORKDAYS.INTL
週末の番号(1〜17)や文字列コード(7文字)はどちらも同じように使えます。片方の使い方を覚えれば、もう片方もすぐに使えるようになります。
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
#VALUE! | 文字列コードが7文字でない | コードの文字数を確認する |
#VALUE! | 文字列コードがすべて「1」になっている | 少なくとも1文字は「0」を含める |
#VALUE! | 開始日や休日に日付以外の値が入っている | セルの書式を「日付」に変更する |
#NUM! | 計算結果が日付の有効範囲外になっている | 日数が大きすぎないか確認する |
よくある間違い:週末を文字列コードで指定するとき、ダブルクォーテーションを忘れてしまうケースです。0101000 と入力するとExcelが数値として解釈してエラーになるため、必ず "0101000" と囲んで入力してください。
WORKDAY.INTL関数のよくある質問
Q. 祝日リストはどうやって作ればいいですか?
別シートに日付を縦1列で並べ、第4引数でその範囲を指定します。内閣府が公開している「国民の祝日」のCSVデータを貼り付けると正確です。テーブル化(Ctrl+T)しておくと、行を追加するだけで範囲が自動で広がり、毎年の更新が楽になります。
Q. 年をまたぐ計算でも祝日は正しく除外されますか?
祝日リストに翌年分の日付まで入れておけば、正しく除外されます。逆に、リストに入っていない祝日は除外されません。年末や年度末の日程を計算するときは、翌年分の祝日も忘れずにリストへ追加してください。
Q. 開始日が土日や祝日でも大丈夫ですか?
問題ありません。WORKDAY.INTL関数は開始日を「0日目」として数えるため、開始日が休日かどうかは結果に影響しません。開始日の翌営業日から数え始めるわけではない点だけ覚えておきましょう。
Q. TODAY関数と組み合わせて「今日から○営業日後」を出せますか?
開始日にTODAY関数を指定すれば、今日基準の日程が自動で更新されます。
=WORKDAY.INTL(TODAY(), 10, 1, 祝日リスト)
ファイルを開くたびに基準日が今日に更新されるので、納期管理シートに向いています。ただし日付を固定したいときは、値として貼り付けて確定してください。
まとめ
WORKDAY.INTL関数のポイントをまとめます。
- 「週末」引数で土日以外の曜日を非稼働日に指定できる
- 番号指定(1〜17)と文字列コード(7文字の0と1)の2通りの指定方法がある
- 祝日リストをセル範囲で参照すれば、毎年の更新も楽になる
- 土日以外の週末パターンが不要なシンプルなケースはWORKDAY関数で十分
「週末」引数の指定さえ理解できれば、あとはWORKDAY関数と同じ感覚で使えます。まずは自分の職場の休日パターンに合った番号を確認するところから始めてみてください。
関連記事
営業日計算に関連する関数の記事もあわせてご覧ください。