Excelで営業日を出す
表計算で営業日を扱う関数は、日付を進めるものと、二つの日付のあいだを数えるものに分かれます。このサイトの「N営業日後」「N営業日前」は前者、「二つの日付のあいだ」で両端を含める設定は後者に対応します。どちらも、Excelが日本の祝日を知っているわけではありません。祝日の日付は、使う人が渡します。数え方の約束は営業日の数え方、渡すべき祝日の中身は祝日と年末年始です。
WORKDAY
Microsoftの説明では、WORKDAYは開始日から起算して、指定した稼働日数だけ前または後の日付を返します。稼働日は、土曜、日曜、および指定した祝日を除く日です。書き方は次のとおりです。
=WORKDAY(開始日, 日数, [祝日])
日数に正の数を入れると開始日より後、負の数を入れると前です。小数は切り捨てられます。このサイトは小数を受け付けず、0以上の整数だけを取り、前か後かは別の選択にしています。切り捨ての結果に頼らないためです。
開始日そのものは、日数の中に入りません。2026年10月16日は金曜日で、10月19日までのあいだに祝日はありません。土曜と日曜だけを飛ばすなら、次の式の結果は2026年10月23日です。このサイトで同じ日に5営業日後を選んだ結果と一致します。
=WORKDAY(DATE(2026,10,16), 5)
日付は、文字列ではなくDATEで渡すのが安全です。Microsoftの説明にも、日付を文字列で入れるとエラーになることがある、とあります。2026年10月16日ならDATE(2026,10,16)です。
祝日を渡さないと、平日の祝日が営業日になる
2026年9月18日の金曜日から1日だけ進める例で、差が見えます。祝日を渡さないWORKDAYは、土日だけを飛ばして9月21日月曜日を返します。しかし9月21日は敬老の日、22日は国民の休日、23日は秋分の日です。この三つの日付を祝日の範囲に入れると、結果の日付は9月24日の木曜日です。
=WORKDAY(DATE(2026,9,18), 1, 祝日の範囲)
このサイトの記入例は、後者です。祝日のチェックを外すと、前者に近づきます。チェックを外した状態と、範囲を空にしたWORKDAYを比べてください。祝日のチェックを入れたまま、Excel側の範囲が空だと、結果は一致しません。
内閣府のCSVは、日付と名称の2列です。WORKDAYに渡すのは日付の列だけです。名称の列を範囲に含めると、日付として読めないセルが混ざります。CSVでは振替休日も国民の休日も、名称が「休日」です。日付の列をそのまま使えば、その行も祝日の範囲に入ります。名称が「元日」や「敬老の日」の行だけを残すと、「休日」の行が落ち、2026年9月22日のような国民の休日が稼働日になります。9月18日と9月24日のNETWORKDAYSは、22日を残すと両端の2日、22日を落とすと3日です。
年末年始の12月29日から1月3日は、元日を除き、このCSVにはありません。Excelでそこも飛ばすなら、その日付を自分で祝日の範囲に足します。このサイトでは「毎年くり返す休み」が同じ役割で、最初はオフです。オフのままWORKDAYと比べるとき、Excel側にも12月29日から1月3日を足さないでください。オンにするなら、両方に足します。
WORKDAY.INTLと週末の指定
土曜と日曜以外を週末にするときはWORKDAY.INTLです。Microsoftの書き方は次です。
=WORKDAY.INTL(開始日, 日数, [週末], [休日])
日数に0を指定すると、開始日が返ります。このサイトで営業日数に0を入れたとき、日付を動かさないのと同じです。正の値は後、負の値は前です。
週末は、番号でも7文字の文字列でも指定できます。文字列は左が月曜日で、0が稼働日、1が週末です。ヘルプの例では、「0000011」が土曜と日曜、「0000010」が土曜だけ、「0000001」が日曜だけです。週末指定で 0 は #NUM!、「1111111」は無効になります。このサイトの土曜・日曜のチェックは、この三つの並びに対応し、両方オフは週末なしです。月曜から金曜のどれかを休みにする指定は、このサイトにはありません。それが必要なら、Excel側の週末番号か、独自の休日で個別の日付を足してください。
週末番号
番号を省略したときは1です。1から7は週末が連続する2日、11から17は週末が1日です。
| 番号 | 週末 |
|---|---|
| 1 | 土曜、日曜 |
| 2 | 日曜、月曜 |
| 3 | 月曜、火曜 |
| 4 | 火曜、水曜 |
| 5 | 水曜、木曜 |
| 6 | 木曜、金曜 |
| 7 | 金曜、土曜 |
| 11 | 日曜だけ |
| 12 | 月曜だけ |
| 13 | 火曜だけ |
| 14 | 水曜だけ |
| 15 | 木曜だけ |
| 16 | 金曜だけ |
| 17 | 土曜だけ |
NETWORKDAYSとNETWORKDAYS.INTL
NETWORKDAYSは、開始日から終了日までの期間に含まれる稼働日の数です。稼働日は、土曜、日曜、および指定した休日を除きます。両端が稼働日なら、その日も数に入ります。このサイトの「両端を含める」と同じです。
=NETWORKDAYS(開始日, 終了日, [祝日])
2026年10月19日から10月23日は、祝日が無く土日も挟まらないので5です。10月16日金曜日から10月19日月曜日は、土日を除いて2です。Microsoftの説明では、開始日が終了日より後なら、同じ大きさの負の数が返ります。このサイトも、終了日が前のときは負の数にします。
「両端を含めない」に直接対応する関数はありません。両端を1日ずつ内側へずらしてからNETWORKDAYSするか、両端が稼働日なら結果からその分を引きます。端が土日や祝日なら、引いてよいのは稼働日だった端だけです。ずらす方が間違いが少ないです。
=NETWORKDAYS.INTL(開始日, 終了日, [週末], [休日])
NETWORKDAYS.INTLの週末と休日の引数は、WORKDAY.INTLと同じ指定です(「0000011」は土曜と日曜)。休日の順番は問わない、と説明されています。
1900年の扱い
Excelは、1900年をうるう年として扱う互換のための仕様を持っています。このサイトの暦は、1900年2月を28日までとし、2月29日は作りません。2000年はうるう年、1900年は平年です。1900年3月1日より前の日付を、Excelのシリアル値とそのまま突き合わせると、1日ずれることがあります。その範囲を比べるときは、DATE関数の結果同士で見て、シリアル値の引き算だけで判断しないでください。
照合の手順
まず、画面で選んだ休みを、Excelの引数に置き換えます。土曜と日曜がオンなら、WORKDAYか、週末「0000011」のWORKDAY.INTLです。祝日がオンなら、内閣府のCSVの日付列を範囲にします。範囲外の年は、画面が警告しているとおりExcelに渡す祝日もありません。毎年の休みや独自の休日をオンにしたら、その日付も同じ範囲に足します。臨時営業日が平日の祝日や独自の休日なら、その日付を休日の範囲から外します。土日に当たる臨時営業日は別で、WORKDAY.INTLの週末は曜日単位のため、特定の土曜1日だけを営業日に戻すことはできません。同じ結果を出すときは、週末を「0000000」にし、休みにしたい土日を休日の範囲に並べてください。そのうえで、同じ開始日と同じ日数のWORKDAYと比べます。あいだの日数は、両端を含める設定のときだけNETWORKDAYSと直接比べられます。
一致しないときは、祝日範囲から「休日」の行が落ちていないか、年末年始を片方だけ足していないか、開始日を1日目に数える別の式になっていないかを見てください。このサイトは開始日を数に入れません。
最終確認日は2026-10-16です。関数の説明は、Microsoftサポートの次のページによります。WORKDAY、WORKDAY.INTL、NETWORKDAYS、NETWORKDAYS.INTL。祝日の日付の出所は内閣府のCSVです。https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv