「納期の10営業日前はいつ?」を数えるとき、カレンダーを指でなぞっていませんか。私は工場の工程表で毎回それをやって、しかも祝日を見落として1日ズレたことがあります。
実はExcelには営業日計算の関数が最初から入っています。足りないのは祝日リストだけ。そしてリスト作りはAIに任せられます。この記事の手順どおりにやれば、10分で「祝日込みの営業日計算」が動きます。
手順1:祝日リストをAIに作らせる
ChatGPTでもClaudeでもGeminiでも構いません。これを貼ってください。
出てきたリストを、Excelの新しいシート(シート名を「祝日」とします)のA列に貼り付けます。B列の名称はあってもなくても動きます。
1つだけ注意:AIはたまに祝日を間違えます。貼ったあと、内閣府の「国民の祝日について」のページと年間の日数だけでも照合してください。ここを省くと私のように1日ズレます。
手順2:コピペで使える計算式
祝日シートができたら、あとは式を貼るだけです。
| やりたいこと | 貼る式 | 例 |
|---|---|---|
| 開始日から10営業日後の日付 | =WORKDAY(A2, 10, 祝日!A:A) | 納期の逆算に |
| 2つの日付の間の営業日数 | =NETWORKDAYS(A2, B2, 祝日!A:A) | 残り日数の確認に |
| 土曜も出勤の場合(日曜のみ休み) | =WORKDAY.INTL(A2, 10, 11, 祝日!A:A) | 週6稼働の現場に |
- ✓A2=開始日のセル、B2=終了日のセル。自分の表に合わせて変えてください
- ✓「祝日!A:A」の部分が、さっき作ったシートを参照しています
- ✓会社独自の休業日(創立記念日など)があれば、祝日シートのA列に日付を足すだけで反映されます
手順3:マクロ派の人向け(コピペ用)
セル関数で足りる人はここは飛ばしてOKです。マクロの中で営業日を計算したい人は、標準モジュールにこれを貼ってください。
Function 営業日後(開始日 As Date, 日数 As Long) As Date
Dim d As Date, cnt As Long
d = 開始日
cnt = 0
Do While cnt < 日数
d = d + 1
If Weekday(d, vbMonday) <= 5 Then
If Application.CountIf(Worksheets("祝日").Range("A:A"), d) = 0 Then
cnt = cnt + 1
End If
End If
Loop
営業日後 = d
End Function
貼ったあとは、セルに「=営業日後(A2, 10)」のように書くだけで使えます。
つまずきポイント早見表
| 症状 | 原因 | 直し方 |
|---|---|---|
| #NAME? と出る | 関数名の打ち間違い/マクロ未保存 | 式を貼り直す。マクロは「マクロ有効ブック(.xlsm)」で保存 |
| 計算が1日ズレる | 祝日リストの抜け | 祝日シートと実際のカレンダーを照合 |
| 会社の休みが反映されない | リストが法律の祝日だけ | 会社カレンダーの休業日をA列に追加 |
| 日付が数字で表示される | セルの書式 | セルの書式設定を「日付」に変更 |
まとめ
- ✓営業日計算は WORKDAY と NETWORKDAYS の2つで足りる
- ✓祝日リストはAIに作らせて、最後に人間が照合する
- ✓会社独自の休みは祝日シートに1行足すだけ
「祝日を手で数える仕事」は今日で終わりにしましょう。