●土日祭日を抜かして日数計算する関数●
(2001.1.18)
必要な物…Excel


日数計算関数というとDATEDIF関数が有名であるが、(Excel97では『fx』でも一覧には出てこないけど…) なんと土日祭日を抜かして日数計算をしてくれる特別な関数がある。
名前は「=NETWORKDAYS」
分析ツールの関数である。
標準インストールをしたExcel上で、何にもしていない状態でこの関数を呼び出そうとすると、「関数定義ナシ」といわれる。
関数定義がされていない

そこで、「ツール」→「アドイン」→「分析ツール」にチェックをいれる。

ツールからアドイン選択

分析ツールにチェック

アドインにはCD−ROMが必要な場合があるが、この場合は必要無い。

この「アドイン」画面が消えたところで、もう一度セルA1に戻り、「fx」ボタンを押してみる。

NETWORKDAYS関数

計算されたことがわかる。

さらに、比較を試みてみる。下記はDATEDIF関数を使ったところ。

DATEDIF関数との比較
このように、DATEDIF関数では60日と計算されるが、NETWORKDAYS関数では土日を抜いて計算するため、45日が計算結果となる。

ただし、問題が2つある。
まず1つ目。
この関数、土日は抜かしてくれるのだけど、国民の休日までは抜かしてくれない。つまり、上記の45日は1/1、1/8、2/11(2/12)と3日ある祝日が含まれてしまっているのだ。
そういう時には、「祭日」欄に日付を入力。

休日を抜かすには

すると、下記となる。
一番上が DATEDIF関数を使った60日、真ん中が土日祝日を抜いたNETWORKDAYS関数で42日、祝日を入れて計算しているNETWORKDAYSは45日。
ちなみに、この「祭日」に{"D1","E1"}や{D1,E1}とやっても#VALUE!となってしまいエラーになる。あくまで日付のようだ。

それぞれの比較

さて問題の2つ目は、DATEDIF関数との比較である。
下記をみてもらいたい。例えば1月2日〜1月5日の計算方法の違いについて、1日違いがあることを知っておかねばならない。
DATEDIF関数では、「開始日から終了日まで」が3日
NETWORKDAYS関数は、「開始日から終了日まで」が4日
このあたり、あれ?DATEDIF関数って…?と思う事もあるかもしれない。

DATEDIFとの比較

しかし、DATEDIF関数で便利なのは、年齢計算が出来る事である。
年齢計算では、DATEDIFで帳尻があう。

年齢計算

おまけ。Excel2000のヘルプを見ていたら、誤字に気が付いてしまった!
「DATEDIF」のところ…  ↓ あれ?(笑)