Excelで営業日を計算する方法 [完全版]

「毎月1日から10営業日後の日付リストを作りたい」「25日の4営業日前の締め日を計算したい」。
ここでは実践的なシナリオとともに、Excel関数の使い方を解説します。また、すぐに使える祝日リストも提供します。


まずは準備: 祝日リストを入手

以下のボタンを押してリストをコピーし、Excelの新しいシート(例:「祝日」シート)の A1セル に貼り付けてください。

日付 祝日名
2026-01-01 元日
2026-01-12 成人の日
2026-02-11 建国記念の日
2026-02-23 天皇誕生日
2026-03-20 春分の日
2026-04-29 昭和の日
2026-05-03 憲法記念日
2026-05-04 みどりの日
2026-05-05 こどもの日
2026-05-06 振替休日 (憲法記念日)
2026-07-20 海の日
2026-08-11 山の日
2026-09-21 敬老の日
2026-09-22 国民の休日
2026-09-23 秋分の日
2026-10-12 スポーツの日
2026-11-03 文化の日
2026-11-23 勤労感謝の日
2027-01-01 元日
2027-01-11 成人の日
2027-02-11 建国記念の日
2027-02-23 天皇誕生日
2027-03-21 春分の日
2027-03-22 振替休日 (春分の日)
2027-04-29 昭和の日
2027-05-03 憲法記念日
2027-05-04 みどりの日
2027-05-05 こどもの日
2027-07-19 海の日
2027-08-11 山の日
2027-09-20 敬老の日
2027-09-23 秋分の日
2027-10-11 スポーツの日
2027-11-03 文化の日
2027-11-23 勤労感謝の日

※ 2026年~2027年のデータを含んでいます。

1. 基本計算: N営業日後を求める

=WORKDAY(開始日, 日数, 祝日リスト)

祝日シートのA列(A2:A50)に日付が入っている場合:

=WORKDAY("2026/1/1", 5, 祝日!$A$2:$A$50)

2. 実践: 毎月のスケジュールを自動生成

① 毎月1日からの「第10営業日」をリストにする

お給料日や支払日など、「月の初めから数えて〇日目」を計算します。

  1. A列に「2026/1/1」「2026/2/1」...と毎月1日の日付を作ります。
  2. B列に以下の数式を入れます。
    =WORKDAY(A1-1, 10, 祝日!$A$2:$A$50)

ポイント: A1-1 (前月末) を起点にして 10 日進めることで、「1日から数えて10日目」が正しく計算されます。

② 毎月25日からの「4営業日前」を計算する(逆算)

給与締め日など、「決まった日から遡って〇日」を計算します。

  1. A列に「2026/1/25」「2026/2/25」...と基準日を作ります。
  2. B列に以下の数式を入れます。
    =WORKDAY(A1, -4, 祝日!$A$2:$A$50)

ポイント: 日数にマイナス -4 を指定すると、過去に遡って営業日を計算します。

3. 応用: 水曜日定休の場合 (WORKDAY.INTL)

美容室や不動産業など、土日以外が休みの場合は WORKDAY.INTL を使います。

=WORKDAY.INTL(開始日, 日数, "0010000", 祝日リスト)

第3引数に "0010000" のような7桁の数字(文字列)を指定します。
月~日を表し、1が休み、0が営業日です。


やっぱりExcel管理は大変...

上記のリストをコピーしても、来年になればまた新しいリストを探して貼り付け直しになります。
さらに「第3水曜日だけ休み」といった複雑なルールは、Excel関数では非常に困難です。

APIなら、すべて自動化できます

ユーザー登録するだけで、最新の祝日データに対応した計算APIが利用可能です。
システムやプログラムに組み込んで、メンテナンスフリーな環境を手に入れましょう。

※ 登録は30秒で完了します。クレジットカードは不要です。


4. APIを使った自動化の実例

上記で登録したAPIを使って、ExcelやGoogleスプレッドシートから直接計算する方法です。

A. Excel (Office 365 / 2013以降)

WEBSERVICE 関数を使うと、APIの結果を直接セルに表示できます。
末尾に &format=text を付けることで、日付だけが返ってくるので面倒な設定は不要です。

💡 APIトークンについて:

  • APIトークンあり(推奨): 無料プランで1日5回、有料プランで100回まで利用可能
  • APIトークンなし: IPアドレスごとに1日10回まで利用可能

※ APIトークンはユーザー登録後、ダッシュボードで確認できます

APIトークンを使用する場合(推奨):

=WEBSERVICE("https://営業日.com/api/v1/business-days/calculate?date=2026-01-01&add_days=5&format=text&api_token=あなたのAPIトークン")

APIトークンなしで試す場合:

=WEBSERVICE("https://営業日.com/api/v1/business-days/calculate?date=2026-01-01&add_days=5&format=text")

注意: Excelで初めてWEBSERVICE関数を使う場合、「このコンテンツの有効化」というセキュリティ警告が出ることがあります。その場合は「有効化」をクリックしてください。

B. Google スプレッドシート

Googleスプレッドシートでも、GAS (Google Apps Script) を使えばカスタム関数として利用できます。

function CALC_BIZ_DAY(date, days, apiToken = "") {
  // format=text を指定してテキストで取得
  let url = `https://営業日.com/api/v1/business-days/calculate?date=${date}&add_days=${days}&format=text`;

  // APIトークンがある場合は追加
  if (apiToken !== "") {
    url += `&api_token=${apiToken}`;
  }

  const response = UrlFetchApp.fetch(url);
  return response.getContentText();
}

これをスクリプトエディタに貼り付ければ、セルの中で以下のように使えます:


5. もっと便利に: その他のAPI活用例

「今日が月初から何営業日目か」を自動取得するAPIも用意しています。

月初からの営業日数を取得

=WEBSERVICE("https://xn--j2ro09aqtc.com/api/v1/business-days/count/month?date=" & TEXT(TODAY(),"yyyy-mm-dd"))

結果例: {"date":"2026-02-01","count":0,"type":"month_start"}
※ JSON形式で返るため、値を取り出すにはWEBSERVICE関数の結果をさらに加工する必要がありますが、システム連携には便利です。


6. 上級編: Excelマクロ(VBA)でオリジナル関数を作る

いちいち長いURLを入力するのが面倒な場合、VBAでオリジナルの関数を作ることが可能です。
これにより、誰でも簡単に =GetBizDate(基準日, 5) のように使えるようになります。

設定手順

  1. Excelを開き、Alt + F11 を押してVBAエディタを開きます。
  2. メニューの「挿入」→「標準モジュール」を選択します。
  3. 以下のコードをコピーして貼り付けます。
Function GetBizDate(BaseDate As Date, AddDays As Integer, Optional ApiToken As String = "") As String
    ' 営業日APIを呼び出す関数
    Dim url As String
    Dim http As Object

    ' API URLの組み立て
    url = "https://営業日.com/api/v1/business-days/calculate?format=text&date=" & Format(BaseDate, "yyyy-mm-dd") & "&add_days=" & AddDays

    ' APIトークンが指定されている場合は追加
    If ApiToken <> "" Then
        url = url & "&api_token=" & ApiToken
    End If

    ' HTTPリクエストの送信
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.Send

    ' 結果を返す
    If http.Status = 200 Then
        GetBizDate = http.responseText
    Else
        GetBizDate = "Error"
    End If
End Function

これで、セルに以下のように入力するだけで計算できるようになります:

APIトークンを使用することで、1日あたりの利用回数制限が緩和されます(無料プラン: 5回、有料プラン: 100回)


よくある質問

Q. WORKDAY関数で#VALUE!エラーが出ます

開始日や祝日リストのセルが日付形式でない場合に発生します。セルの書式設定を「日付」に変更してください。また、祝日リストの範囲指定が正しいか確認してください。

Q. WEBSERVICE関数でHTML(タグ)が返ってきます

URLの末尾に &format=text を追加してください。これにより日付のみがテキスト形式で返されます。

Q. 祝日リストは毎年更新が必要ですか?

Excel関数を使う場合は毎年更新が必要です。当サイトのAPIを使えば、祝日データは自動的に最新に保たれるため、更新作業は不要です。

Q. 銀行カレンダーで計算したい場合は?

APIのパラメータに &calendar_type=bank を追加すると、年末年始(12/31〜1/3)も休業日として計算されます。


関連ページ

広告