doodle-on-web

自分で調べたことや、仕事の中で質問されたことなどをまとめています。

Excelで特定の曜日を除いて日数を足す方法|水曜定休もWORKDAY.INTLで一発

スポンサーリンク

Excelで特定の曜日を除いて日数を足すなら =WORKDAY.INTL(開始日, 日数, 週末指定, 祝日) です。週末指定に「0010000」のような7文字(月曜始まり・1が休み)を渡せば、水曜定休でも週休3日でも自由に除外できます。土日だけなら第3引数は省略してもかまいません。

「5営業日後に納品」「定休日を除いて3日後に連絡」——こうした日付は手で数えると必ずどこかでズレます。カレンダーを指でたどって数えた納期が、後から祝日で1日足りなかった、という経験は多くの人にあるはずです。WORKDAY.INTL を覚えると、この手の計算がすべて1つの数式で片付きます。

Excelで特定の曜日を除いて日数を足す方法|水曜定休もWORKDAY.INTLで一発のサンプル ▲ Date and Time サンプル

WORKDAY.INTL の基本構文

=WORKDAY.INTL(開始日, 日数, [週末], [祭日])
引数 内容
開始日 起算日。この日は日数に含まれません
日数 加算する営業日数。マイナスで過去へ逆算
週末 除外したい曜日(番号または7文字の文字列)。省略時は土日
祭日 追加で除外する日付のリスト(祝日・会社休業日など)

Excel 2010 以降で使えます。Googleスプレッドシートにも同名の関数があり、書き方は同じです。

WORKDAY(無印)との違い

似た名前の WORKDAY もありますが、こちらは休みが土日で固定され、変更できません。休みが土日以外なら .INTL 一択、と覚えておけば迷いません。逆に土日休みしか扱わないなら、無印のほうが引数が少なくて楽です。

まず動かしてみる:水曜定休の店で「5営業日後」

A2に 2026/8/27(木)が入っているとします。

=WORKDAY.INTL(A2, 5, "0010000")

結果は 2026/9/1(火)。8/28金→8/29土→8/30日→8/31月→9/1火と数え、水曜だけを飛ばしています。土日も営業する店なので、土日はきちんと1日として数えられている点に注目してください。

この "0010000" が週末指定です。ここを書き換えるだけで、あらゆる休み方に対応できます。

週末指定は「番号」と「文字列」の2通り

定番パターンは番号で指定

よくある休みの組み合わせは、番号1つで指定できます。

番号 休みの曜日 番号 休みの曜日
1(省略時) 土・日 11 日のみ
2 日・月 12 月のみ
3 月・火 13 火のみ
4 火・水 14 水のみ
5 水・木 15 木のみ
6 木・金 16 金のみ
7 金・土 17 土のみ

番号で指定できるのは「連続する2日」か「1日だけ」のパターンのみです。ここに当てはまらない休み方は、次の文字列指定を使います。

自由な組み合わせは7文字の文字列で

"0010000" のように、月曜始まりの7文字で指定します。1が休み、0が営業日です。

休みの形 週末指定
土日休み "0000011"
日曜のみ休み "0000001"
水曜定休 "0010000"
水曜+日曜休み "0010001"
週休3日(水・土・日) "0010011"
休みなし(年中無休) "0000000"

文字列はダブルクォートで囲みます。7文字すべてを1にすると営業日が存在しなくなり、#VALUE! エラーになります。文字数が7文字ちょうどでない場合や、0と1以外の文字が混ざった場合も同じく #VALUE! です。

実例2:土日と祝日を両方除いて納期を出す

祝日はどこかのセルにリスト化しておきます。ここでは D2:D20 に祝日を入れたとします。

=WORKDAY.INTL(A2, 15, 1, $D$2:$D$20)

A2が 2026/9/1 なら結果は 2026/9/25。祝日リストを渡さないと 9/22 になるので、9月の連休3日分がきちんと効いていることが分かります。

祝日リストは数式をコピーしてもずれないよう $ で絶対参照にするか、テーブル化して 祝日[日付] のように名前で参照するのが安全です。

実例3:定休日をセルで切り替える

店舗や部署ごとに定休日が違う場合、数式に "0010000" を直書きすると全部書き換える羽目になります。週末指定はセル参照でも渡せるので、B1に定休日パターンを入れておきましょう。

=WORKDAY.INTL(A2, 5, $B$1, $D$2:$D$20)

B1を "0010000"(水曜定休)から "0000011"(土日休み)に変えるだけで、シート全体の計算が切り替わります。店舗別の一覧表なら、行ごとに定休日の列を持たせて $B2 のように列だけ固定する形が便利です。

マイナスを使えば「◯営業日前」も出せる

日数にマイナスを入れると過去方向に数えます。締切から逆算するときに便利です。

=WORKDAY.INTL(納品日, -3, 1, $D$2:$D$20)

「納品の3営業日前までに原稿を上げる」といった逆算スケジュールが、そのまま数式になります。

つまずきやすい3つのポイント

結果が「46266」のような数字になる

日付シリアル値がそのまま表示されている状態です(46266は2026/9/1にあたります)。セルを選んで「ホーム」→表示形式を「短い日付形式」に変えれば直ります。数式が間違っているわけではありません。

文字列指定は日曜始まりではない

WEEKDAY関数などの感覚で日曜始まりだと思い込むと、休みが1日ずれます。必ず月曜始まり(月火水木金土日)です。ここが最も多いミスです。

「日数0」では休日を営業日に丸められない

=WORKDAY.INTL(A2, 0, 1) は、A2が日曜でも日曜のまま返します。開始日が休日だったら翌営業日にしたい、という場合はこう書きます。

=WORKDAY.INTL(A2-1, 1, 1, $D$2:$D$20)

1日前から1営業日進めることで、A2が営業日ならA2のまま、休日なら次の営業日に丸まります。受注日を営業日に揃えたいときの定番テクニックです。

日数を「数える」ならNETWORKDAYS.INTL

逆に、2つの日付の間に営業日が何日あるかを数えたいときは NETWORKDAYS.INTL を使います。引数の考え方はほぼ同じです。

=NETWORKDAYS.INTL(開始日, 終了日, "0010000", $D$2:$D$20)

こちらは開始日と終了日の両方を含めてカウントします。WORKDAY.INTL が開始日を含まないのと逆なので、セットで覚えておくと混乱しません。

まとめ

  • 曜日を除いて日数を足すのは WORKDAY.INTL(無印WORKDAYは土日固定)
  • 土日だけなら第3引数は省略、それ以外は番号か7文字の文字列
  • 文字列は月曜始まり・1が休み。7文字以外や0/1以外の文字は #VALUE!
  • 祝日は第4引数にリストで渡す(絶対参照推奨)
  • 週末指定はセル参照にすると店舗別・部署別の切り替えが一発
  • 開始日は含まれない。休日を営業日に丸めるなら「-1して+1営業日」

定休日が特殊な業種ほど効果が大きい関数です。祝日リストを一度作ってしまえば、納期表もシフト表も自動で埋まるようになります。


関連記事

あわせてチェック