関数(サイト内)検索

Loading

2010/07/27

#158 DAYS360


書式

DAYS360(開始日,終了日,[方式])

概要

1 年を 360 日 (30 日×12) として、支払いの計算などによく使用される 2 つの日付の間の日数を返す関数。

引数

開始日必須。間の日数を求める 2 つの日付の始まりの日付を指定。
終了日必須。間の日数を求める 2 つの日付の終わりの日付を指定。
方式省略可能。計算に米国 NASD 方式とヨーロッパ方式のどちらを採用するかを、論理値で指定。
以下の通り。
方式
説明
省略、または FALSE または 0
NASD 方式を採用。
TRUE または 1
ヨーロッパ方式を採用。

補足/解説
1. 開始日/終了日とも明示的にシリアル値を指定することが望ましいので、DATE 関数の戻り値を利用することを推奨する。
2. ただし、Excel では、表示形式が「日付」であれば、シリアル値にて内部管理されるので、セル参照での利用は可能。
文字列で指定しても動作するが、誤動作要因となる可能性が残るので留意が必要。
3. 開始日を終了日後で指定しても、戻り値が負の数となるだけでエラーとはならない。
NASD 方式とヨーロッパ方式の違いについて(余談)
会計の専門家ではないので、そも 1 年を 360 日と計算する意味がよく分ってませんが...。

NASD 方式とヨーロッパ方式とでは、開始日/終了日に「月の最終日」が指定された場合に、考え方の差が生じるようです。

ヨーロッパ方式は、1 年を 12 x 30 日で単純に割り切っているので、計算上のイレギュラーとして捉えるべきは 31 日が指定された場合だけです。
しかも割り切っているので、同じ月の 30 日と見なして計算するだけで、蛇足すれば、2/28 は「最終日である」認識すらしません。

これに対し、NASD 方式では、最終日を一定の調整ポイントとして扱っているので、関数リファレンスに拠れば、以下の仕様となっています。

① 開始日が最終日の場合、同じ月の 30 日と見なす。
② 終了日が最終日で、開始日が同じ月の 30 日より前の場合、
  翌月の 1 日と見なす。
③ 終了日が最終日で、開始日が②以外の場合、同じ月の 30 日
  と見なす。

...?

②が先に語られることで複雑な話と化していますが、③のパターンって、実は開始/終了日ともに最終日を指定された場合に限定されませんか?
...詳しく検証する気はありませんが... f ^_^;)...。

思うに、ヨーロッパ方式で、2/28 ~ 3/1 を計算すると、3 日ってことになっちゃうのが気に入らなかった人が、最終日で調整するロジックを組み入れたんだけど、単純に、開始日が最終日なら同じ月の 30 日、終了日なら翌月 1 日で作ってみたら、開始/終了ともに最終日指定されると、戻り値が 1 になっちゃっう月ができちゃったんで、後から抜け道を付け足した程度の話じゃないでしょうかね?

何れにせよ、1 年を 360 日で計算するという大雑把な話ですし、例えば、7/30 ~ 7/31 は、どちらの方式で計算したって 0 なんですから、お好きな方式をご利用ください。

ちなみに、差の出るパターンを幾つか列挙しておきます。
開始日終了日NASD 方式ヨーロッパ方式
2010/2/282010/2/28 - 2 0
2010/2/282010/3/1 1 3
2010/3/12010/3/31 30 29

正直な話、どうせシリアル値なんですから、単純に引き算した方がスッキリするような気がします。

特記事項

使用例
参考:Excel2010 関数リファレンス

I.M.L.,ltd

0 件のコメント:

コメントを投稿