日付関数を使って
開始日と終了日から作業期間を求める


 今回は2つの日付データの期間差を求める関数について紹介します。日付関数には、期間差を求める関数として、NETWORKDAYS、YEARFRAC、DAYS360の3種類が用意されています。このなかでNETWORKDAYS、YEARFRACはツールメニューのアドインで登録を行わなければ使用できないアドイン関数なので注意しましょう。また、関数の貼り付けダイアログには表示されない関数がエクセルには用意されています。DATEDIF関数です。この関数は数式バーに手入力で入力しなければならないのですが、年/月/日からなる日付間の月数のみや日数のみを取り出したり、通常、引き算ではできない年数のみを除いた月数や日数、月数を除いた日数などを単位を変更するだけで、簡単に求める事のできる便利な関数なのです。
 また、開始日から終了日までの間で休日を除いた作業日数だけを求める場合、休日の日数を数えて引き算するのはとても面倒。そんなときは、NETWORKDAYS関数が便利。この関数を利用すると、祝日を範囲選択するだけで簡単に、土日・祝日を除いた作業日数を求めてくれます。また、ここで開始日からの作業日数から完成予定日を求めたい場合、ただ単に日数を足すだけでは休日の日数がわからないため、正しく予定日を出すことができません。そのようなとき用意されているのが、WORKDAY関数です。このように日付関数は、足し算や引き算ではできない困難な日付の計算を簡単に行ってくれる、日付データを扱う場合にはかかせない関数と言えるでしょう。


今月の関数


指定された期間内の日数、月数、年数を出す
DAATEDIF関数
書式 =DATEDIF(開始日,終了日,"単位")
年数を除いた月数、月数を除いた日数などを引き算ではできない期間差を簡単に求めてくれる関数。ただし、関数の貼り付けダイアログには表示されない関数なので、数式バーに関数式を直接入力しなければならないので注意。


指定した日数後(または前)の日付のシリアル値を返す
WORKDAY関数
書式 =WORKDAY(開始日,日数,[,祭日])
開始日から計算し、土日を除いた指定の稼働日数後(または前)を計算してくれる。たとえば、C列の工事開始日からH列の作業日数(土、日、祝日を除く)を加えた場合のD列の完成予定日を求めるといった際などに使う。


休日を除いた稼働日数を求める
NETWORKDAYS関数
書式 =NETWORKDAYS(開始日,終了日[,祭日])
工事開始日から完成予定日までの土日・祭日を除いた「稼働日数」を求めることができる。祭日はC13からD20までの範囲のように指定しておくと、祭日を稼動日数から除いて計算。


1 DATEDIF関数で年数を求める

年数を求めるセルE6をクリック。(1)数式の編集ボタンを押し、(2)キーボードから「DATEDIF(」と入力。するとワークシート上に関数パレットが表示。(3)まず開始日にC6を選択。[ , ] と入力。すると関数パレットのボックスが1つ追加。(4)次に終了日にD6を選択。再び [ , ] と入力すると3つ目のボックスが追加。(5)期間を求めたい単位をダブルクォーテーションで囲んで入力。ここでは年数を求めたいので"Y"と入力(「単位表」参照)。(6)[OK]ボタンをクリック。


           


E6のセルに入った式は
=DATEDIF(C6,D6,"Y")






▲次に年数と月数を求める。月数を求めたいセルF6をクリックし、年数を求めたときと同じ操作を繰り返し、単位には "YM" を入力。"M" と入力すると期間全体の月数、つまり17ヶ月となる。E6に入力した式をF6にコピーする方法もある。その際は、参照元がずれないよう参照先を設定しておく。E6で年数を求めたいときに、開始日と終了日のセル番地にそれぞれ [F4] キーを3回押す。すると列だけが固定され、コピーをしても開始日と終了日の位置はずれない。(7)単位は "YM" と変更。




▲月数を除いた日数を求める。日数を求めるセルG6をクリックし、年数や月数と同様に式を入力し、単位に "MD" と入力する。ここで求められた日数は期間なので、実際の建築日数は開始日も含めるので数式バーにキーボードから+1と入力。


2 YEARFRAC関数で年数を求める

2つの期間の年数ならYEARFRAC関数で求められる。この関数はアドイン関数なので、ツールメニューのアドインで分析ツールにチェックを入れておく。また年を単位とするので、INT関数で小数点以下を切り捨てる。(1)年数を求めるセルをクリックし、関数の貼り付けダイアログから [INT] 関数を選択。[その他の関数] を選択。再表示された関数の貼り付けダイアログから [YEARFRAC] 関数を選択。開始日にはC6、終了日にはD6、基準には実際の日数で計算するので1と入力(「基準表」を参照)。[OK] ボタンをクリック。




E6のセルに入った式は
=INT(YEARFRAC(C6,D6,1))

3 NETWORKDAYS と WORKDAY をつかう

NETWORKDAYS関数を利用すると、休日を除いた日数を求めることができる。土日は自動的に期間から削除され、祝日は祝日のデータを範囲選択することにより削除できる。(1)あらかじめ祝日をワークシート上に作成。(2)日数を求めたいセルをクリックし、関数の貼り付けダイアログから [NETWORKDAYS] 関数を選択。(3)開始日にはC6、(4)終了日にはD6、(5)祝日には祝日が入力されたC14からD20までを範囲選択。このとき、コピーしてもずれないように絶対参照にしておく。(6)[OK] ボタンをクリック。





祝日が少ないときは、祭日の引数ボックスに直接入力しよう。日付をダブルクォーテーションで囲み、その間をセミコロンで区切り、祝日全体を [ { } ] で囲むと認識される。



H6のセルに入った式は
=NETWORKDAYS(C6,D6,$C$14:$D$20)



逆に作業日数がわかっている場合に完成予定日を求める。WORKDAY関数を利用すると、作業に数に年間の休日(土日・祝日)が自動的に加算され完成予定日を求められる。(7)完成予定日のセルD6をクリック、関数の貼り付けダイアログから [WORKDAY] 関数を選択。(8)開始日にはC6、(9)日数はH6を入力。このとき、作業に数は開始日も含めた日数なので1日引かなければならない。(10)祭日は、シート上に入力された祭日を範囲選択し、絶対参照にする。