カレンダー・ベースではなく、営業日ベースで日数計算を行うにはWORKDAY関数やNETWORKDAYS関数を使用すると便利である。WORKDAY関数を使用すると、日数と営業日カレンダーを元にして、目的の営業日付を算出することができる。NETWORKDAYS関数を使用すると、2つの日付と営業日カレンダーを元にして、日付間の営業日数を算出することができる。
対象ソフトウェア:Excel 2000/Excel 2002/Excel 2003
大小問わず、法人や団体では営業日という考え方があるだろう。そして、業務上の処理において営業日ベースで日数を計算する必要性は少なからず存在するはずである。土日や国の定める祝日に限らず、創立記念日や夏季休日など独自に定められた休業日もあるため、一見営業日ベースでの日付計算は非常に難解に思われるかもしれない。
だがExcelには、WORKDAY関数とNETWORKDAYS関数という非常に便利な関数が用意されている。これらは、週末や休日などを除外して日数(稼働日)を計算するための関数である。これらの関数を使用すると、個々の営業日事情に合わせた日付計算を簡単に行えるようになる。
本稿では、例として見積書テンプレート作成を通じてWORKDAY関数の使用方法を紹介し、そして出荷所要日数を分析する表の作成を通じてNETWORKDAYS関数の使用方法を紹介する。
本TIPSで紹介するExcelの関数は、「分析ツール」というExcelのアドインを利用している。「分析ツール」アドインはExcelに標準でインストールされているが、利用のためには初期設定が必要になる。初期設定を行わないとExcelが関数を識別できず、「#NAME?」というエラーが返されることになる。
初期設定のためには、[ツール]メニューから[アドイン]を選択し、[アドイン]ダイアログを表示する。[アドイン]ダイアログの[有効なアドイン]欄から[分析ツール]のチェック・ボックスをオンにし、[OK]ボタンをクリックする。
「アドイン」ダイアログで[OK]ボタンをクリックすると、環境によっては次のようなメッセージが表示されるので、[はい]ボタンをクリックする。その後、環境によりExcel(Office)のセットアップ媒体を要求するメッセージが表示された場合は指示どおりにインストール媒体をセットする。
まずはExcelで見積書のテンプレートを作成してみよう。なおこのテンプレートは別稿のTIPSで作成したものを流用するため、テンプレート内で利用しているVLOOKUP関数については「TIPS―VLOOKUP関数でExcel帳票への自動入力を可能にする」を参照していただきたい。
(8)の列には出荷予定日を算出するための計算式を指定する。例えば、セルI5ならば、以下のような計算式となる。
=IF(B5<>"",WORKDAY($I$2,$H5,holidays!$B$3:$B$36),"")
IF関数を使わずに単に「=WORKDAY($I$2,$H5,holidays!$B$3:$B$36))」とすると、セルB5(商品コード欄)が入力されていない場合、エラー「!#VALUE」が表示されてしまう。そのため対策として、セルB5が空文字の場合はセルI5も空文字をセットするようにしている。
WORKDAY関数は、ある日付から、指定された日数だけ前後した日付を返す関数である(週末や指定された日付を休日として除外し、営業日だけで計算する)。その書式は「=WORKDAY(開始日,日数,祝日)」であり、各引数の意味は次の表のとおりとなっている。
引数 | 概要 |
---|---|
開始日 | 起算日の日付を指定する |
日数 | 開始日から起算した所要日数を指定する。0なら開始日、正なら将来の日付(例:1なら次の営業日)、負なら過去の日付を返す |
祝日(省略可) | 祝日や創立記念日などの独自休日など、営業日日数計算の対象から外す日付のリストを指定する。指定を省略した場合は土日のみが計算の対象外となる |
WORKDAY関数の引数 WORKDAY関数は、ある日付から、指定された日数だけ前後した日付を返す関数である(週末や指定された日付を休日として除外し、営業日だけで計算する)。 |
NETWORKDAYS関数は、指定された2つの日付の期間に含まれる稼働日(週末や指定された日付を休日として除外した営業日)の日数を返す関数である。例えば同じ日付を指定すると結果は1、次の営業日を指定すると結果は2となる。終了日より開始日が後の場合は負の数となる。
最後に、WORKDAY関数で算出した結果は1900年1月1日を起算日としたシリアル値となっているため、I列全体に対する表示形式を[標準]から[日付]へと変更する。I列全体を選択した状態で書式メニューから[セル]を選択し、[表示形式]タブ内の「分類」として[日付]を選択すれば良い。
holidaysシートには、営業日日数計算の対象外とするリスト(祝日や独自の休日などのリスト)を入力する。
続いて、出荷所要日数の分析表を作成してみよう。この分析表では2つの日付の差(所要日数と出荷所要標準日数)を営業日ベースで計算する。
(2)の列には実際に受注してから出荷するまでに要した日数を営業日ベースで算出するための計算式を指定する。例えば、セルF5ならば、以下のような計算式となる。
=NETWORKDAYS(B5,D5,holidays!$B$3:$B$36)-1
NETWORKDAYS関数は、指定された2つの日付の期間に含まれる稼働日の日数を返す関数である(週末や指定された日付を休日として除外し、営業日だけで計算する)。その書式は「=NETWORKDAYS(開始日,終了日,祝日)」であり、各引数の意味は次の表のとおりとなっている。
引数 | 概要 |
---|---|
開始日 | 起算日の日付を指定する |
終了日 | 終了日の日付を指定する |
祝日(省略可) | 祝日や創立記念日などの独自休日など、営業日日数計算の対象から外す日付のリストを指定する。指定を省略した場合は土日のみが計算対象外となる |
NETWORKDAYS関数の引数 NETWORKDAYS関数は、指定された2つの日付の期間に含まれる稼働日(週末や指定された日付を休日として除外した営業日)の日数を返す関数である。例えば同じ日付を指定すると結果は1、次の営業日を指定すると結果は2となる。終了日より開始日が後の場合は結果は負の数となる。NETWORKDAYSは、NET(正味)のWORKDAYS(営業日数)を計算する関数という意味。 |
注意すべきは、式の末尾で「-1」と指定している点である。NETWORKDAYS関数では開始日も終了日も計算結果に含まれるため、例えば開始日と終了日が同日の場合は結果が「1」となる。差異を計算するなら、同日の場合は「0」として処理するのが望ましいため、この場合は計算結果に対して一律1日減算している。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.