プロが教えるわが家の防犯対策術!

期間から期間を引く計算方法を教えてください
○年○ヵ月○日から○年○ヵ月○日を引いて○年○ヵ月○日を表示する方法を教えてください。

たとえば、勤続年数が31年6ヵ月15日(A1)で休職期間が1年8ヶ月21日(A2)あった場合、実際に勤務についていた日数を祭日に関係なく、○年○ヵ月○日(A3)と表示させたい。
入社日  昭和52年9月16日
退社日  平成21年3月31日
在籍期間  31年6ヵ月15日

休職開始日 平成18年1月8日
休職終了日 平成19年9月29日
休職期間   1年8ヶ月21日

期間計算の方法はEXCELのDATEDIF関数で出してます。
期間同士を足したり引いたりする方法を教えてください。

A 回答 (3件)

DATEDIF関数のバグはご存知ですよね?


http://pc.nikkeibp.co.jp/article/NPC/20070530/27 …

日数計算の場合、このバグと同じ問題が常時付きまといます。

例えば、1ヶ月と20日から、1ヶ月と10日を引く場合、起点の月日次第で
答えは8日~11日まで変動します。コレをどう考えるかですね。
(例えば3月31日の1ヶ月と1日前は何日か、という問題がそうです)

ですので、この計算は、期間の定義を正確に行わないと算出できません
特に勤続年数などの「金額に直結する計算」の場合、定義の違いで金額
が変わってしまいますので重大な問題になります。計算式の提示はその
定義が確定してからです。

ちなみにこれらの定義を100%何とかする場合は、大概、VBAでコードを
書かないと計算できないような、複雑な計算になります。

この回答への補足

バグは知りませんでした。
1ヶ月を定義しないと無理なことがわかりました。
ありがとうございました。

補足日時:2009/04/03 14:06
    • good
    • 0

期間の前後から何年何ヶ月何日を引くことは起算日または終期をその分ずらせば可能でしょうが、期間の中で期間を差し引くことはできません。


やってみればわかりますがうるう年、大の月、小の月があるのでそんな計算はエクセルでなくともできません。
年数同士、月数同士を引く等で無理にやって出来なくはないでしょうが、実際に長い期間の方が短い期間の方よりも短く計算される、あるいはその逆の不都合が起き、意味のない数字になります。
なお、DATEDIF関数自体が不正確です。そのため、エクセルのヘルプにのせていないのです。

http://pc.nikkeibp.co.jp/article/column/20081118 …
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2009/04/03 14:23

単位が合わないので計算自体難しいと言うか無意味と言うか



1年は365日と366日が存在します
1月は28.29.30.31と4種類存在します

たとえば
>休職開始日 平成18年1月8日
>休職終了日 平成19年9月29日
>休職期間   1年8ヶ月21日
この求め方ですが確かに年、月、日だけをそれぞれ計算すれば
1年と8ヶ月と21日
になりますが、総日数で計算すると629日
仮に
休職開始を平成18年2月8日
休職終了を平成19年10月29日
とした場合、年月日だけで見ると例に挙げているのと同じ
1年と8ヶ月と21日
となりますが総日数は628日になってしまいます。
休職開始を平成18年3月8日
休職終了を平成19年11月29日
の場合は631日と日数計算だと開始日と終了日が異なると数日間の誤差が生じます。

はじめから日数だけで計算すれば、在籍期間から休職期間を引く事で実際の勤務日数を求める事は可能ですが、その日数からXX年YYカ月ZZ日と求める事自体あまり意味を成さないと言う事になります。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2009/04/03 14:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています