WORKDAY関数は、土日と指定した祝日を除いて「〇営業日後」の日付を返す関数です。納期や支払期日の計算に使います。引数は3つで、祝日はExcelに入っていないため自分でリストを用意する必要があります。
この記事でわかること
- WORKDAY関数の3つの引数と、開始日の数え方
- 祝日リストの作り方と、絶対参照で固定する理由
- 土曜出勤・週休3日の会社で使うWORKDAY.INTL
- 「翌営業日」「前営業日」を求める書き方
- 結果が5桁の数字になる・祝日が除外されないときの直し方
WORKDAY関数の構文と引数
構文
=WORKDAY(開始日, 日数, [祭日])
| 引数 | 指定するもの | 注意点 |
|---|---|---|
| 開始日 | 起点となる日付 | この日自体は日数に数えない |
| 日数 | 何営業日進める(戻す)か | 正なら未来、負なら過去。小数は切り捨て |
| 祭日 | 休業日として除く日付の範囲 | 省略可。省略すると土日だけを除く |
除外されるのは土曜・日曜と、祭日に指定した日付です。それ以外の平日を1営業日として数えます。
WORKDAY関数はExcel 2016以降のどのバージョンでも使えます。動的配列関数のような世代差はありません。

基本の使い方
A2に受注日、B2に「受注から5営業日後の納期」を出す例です。祝日はH列に一覧を作ってあるとします。
=WORKDAY($A2, 5, $H$2:$H$30)
⚠️ 結果が5桁の数字になったら
46123 のような数字が表示されることがあります。これはエラーではなく、日付のシリアル値がそのまま出ている状態です。
セルを選び、「ホーム」タブの表示形式を「短い日付形式」に変えれば日付になります。既存のセルに数式を入れた場合は書式が引き継がれるため、標準書式のセルでだけ起きます。
祝日リストは絶対参照で固定する
$H$2:$H$30 のようにドル記号で固定します。固定せずに下へコピーすると、参照範囲が1行ずつずれて、下の行ほど祝日が抜け落ちます。
祝日リストは日付として入力してください。2026/1/1 は日付、2026年1月1日 と手で打った文字列は日付ではありません。右寄せなら日付、左寄せなら文字列です。
祝日リストの作り方
Excelには日本の祝日が入っていません。次のいずれかで用意します。
- 別シートに「祝日」列を作り、その年の祝日を日付として並べる
- 年末年始・夏季休暇・創立記念日など、会社独自の休業日も同じ列に足す
- 範囲に名前を付けておくと、数式が
=WORKDAY($A2, 5, 祝日)と読みやすくなる
土日と重なる祝日を混ぜても問題ありません。もともと土日は除外されるため、二重に引かれることはない仕様です。
実務でよく使う4パターン
① 翌営業日・前営業日を求める
「その日が営業日ならその日、休みなら次の営業日」を出したい場面は多くあります。開始日を1日前にずらすのが定石です。
=WORKDAY($A2-1, 1, $H$2:$H$30)
A2が平日ならA2自身が返り、A2が土日祝なら次の営業日が返ります。前営業日なら =WORKDAY($A2, -1, $H$2:$H$30) です。
② 締め日と支払日を組み立てる
「月末締め・翌月末払い、休日なら前営業日」という条件は、EOMONTH関数と組み合わせます。
=WORKDAY(EOMONTH($A2, 1)+1, -1, $H$2:$H$30)
EOMONTHで翌月末を求め、その翌日から1営業日戻すことで「翌月末以前の直近の営業日」になります。
③ 土曜出勤の会社で使う(WORKDAY.INTL)
WORKDAYは土日固定です。休みの曜日を変えるならWORKDAY.INTL関数を使います。
=WORKDAY.INTL($A2, 5, 11, $H$2:$H$30)
第3引数の週末番号で休みの曜日を指定します。
| 番号 | 休みになる曜日 |
|---|---|
| 1(省略時) | 土曜・日曜 |
| 2 | 日曜・月曜 |
| 7 | 金曜・土曜 |
| 11 | 日曜のみ |
| 12 | 月曜のみ |
| 17 | 土曜のみ |
曜日を自由に組み合わせたいときは、7文字の文字列で指定します。月曜から日曜の順で、1が休業日、0が営業日です。
"0000011"… 土日休み(番号1と同じ)"0000001"… 日曜のみ休み(番号11と同じ)"0001011"… 木・土・日休み
すべての曜日を1にすることはできません。
④ 期間内の営業日数を数える
日付ではなく日数が欲しい場合は、NETWORKDAYS関数です。
=NETWORKDAYS($A2, $B2, $H$2:$H$30)
⚠️ WORKDAYと違い、NETWORKDAYSは開始日と終了日の両方を数に含めます。同じ日を指定すれば、それが平日なら1が返ります。

うまくいかないときの原因と直し方
| 症状 | 主な原因 | 直し方 |
|---|---|---|
| 5桁の数字が表示される | セルの表示形式が「標準」 | 表示形式を日付に変える |
#VALUE! | 開始日が文字列として入っている | DATEVALUE関数で変換するか入力し直す |
#VALUE! | 祭日の範囲に文字列が混ざっている | 祝日リストを日付型に揃える |
#NUM! | 結果がExcelの扱える日付を外れた | 日数の桁を確認する |
| 祝日が除外されない | 祭日の範囲が相対参照のまま | $H$2:$H$30 の形に固定する |
| 祝日が除外されない | 祝日が日付でなく文字列 | 左寄せなら文字列。入力し直す |
| 土曜を営業日にしたい | WORKDAYは土日固定 | WORKDAY.INTLで週末番号11を指定する |
| 1日ずれる | 開始日を数に含めていると思っている | 開始日は数えない。前営業日から起算する |
祝日が効いていないかを確かめる方法
祝日リストが本当に読まれているかは、切り分けの1本を書けば分かります。
=COUNTIF($H$2:$H$30, DATE(2026,1,1))
これが0なら、その日付は範囲に日付として入っていません。文字列で入っているか、範囲の外にあります。祝日リストの検算は、この1行が最短です。

似た関数との使い分け
| 関数 | 対応バージョン | 返すもの・選ぶ場面 |
|---|---|---|
| WORKDAY | 2016〜 | 土日祝を除いた〇営業日後の日付 |
| WORKDAY.INTL | 2016〜 | 同上。休みの曜日を自分で決める |
| NETWORKDAYS | 2016〜 | 期間内の営業日数(両端を含む) |
| NETWORKDAYS.INTL | 2016〜 | 同上。休みの曜日を自分で決める |
| EOMONTH | 2016〜 | 〇ヶ月後の月末の日付 |
| EDATE | 2016〜 | 〇ヶ月後の同じ日 |
=A2+5 の単純加算 | 2016〜 | 暦日で数える(土日を除かない) |
選び方は単純です。欲しいものが日付ならWORKDAY系、日数ならNETWORKDAYS系。そのうえで、休みが土日以外を含むなら .INTL の付いたほうを選びます。
「〇日後」を暦日で出すなら、そもそも関数は要りません。=A2+5 で足せます。営業日で数える必要があるかどうかが、最初の分かれ道です。
よくある質問
Q1:開始日は営業日数に含まれますか?
含まれません。金曜日を開始日にして1を指定すると、翌週の月曜日が返ります。開始日自身を候補に入れたいときは、=WORKDAY(A2-1, 1, 祝日) のように1日前から起算してください。
Q2:日本の祝日を自動で判定できますか?
Excelの標準機能では判定できません。祝日データが組み込まれていないためです。祝日の一覧は公的機関がファイル形式で公開しているので、それを取り込んで祝日シートに貼り付ける運用が一般的です。振替休日や、年によって日付が動く祝日もあるため、年に1回の更新作業として運用に組み込んでおくと安全です。
Q3:会社独自の休業日も除外できますか?
できます。祭日の範囲に、年末年始・夏季休暇・創立記念日などを日付として追加するだけです。祝日と会社休業日を分けて管理したい場合は、2つの列を縦につないだ範囲を指定するか、それぞれを別の列に置いて範囲を広めに取ります。
Q4:土日祝を除いた日数を数えたいのですが、WORKDAYで出せますか?
出せません。WORKDAYが返すのは日付です。日数を数えるのはNETWORKDAYS関数の役割で、=NETWORKDAYS(開始日, 終了日, 祝日) と書きます。両端の日を含めて数える点だけ注意してください。
Q5:結果に曜日も一緒に表示できますか?
セルの表示形式をユーザー定義にして yyyy/m/d(aaa) と設定すると、2026/4/6(月) のように曜日つきで表示されます。値そのものは日付のままなので、その後の計算にもそのまま使えます。
まとめ
- 引数は開始日・日数・祭日の3つ。開始日は数に含まない
- 祝日はExcelに入っていない。自分でリストを作り、F4で固定する
- 結果が5桁の数字なら表示形式を日付に変えるだけ
- 翌営業日は
=WORKDAY(A2-1, 1, 祝日)。前営業日は日数を-1に - 土曜出勤ならWORKDAY.INTL、日数が欲しいならNETWORKDAYS
※関数の対応バージョンはExcelの一般提供時点の情報にもとづいています。祝日は法令の改正や振替により変動するため、祝日リストは年度ごとに最新の情報で更新してください。

