- ベストアンサー
エクセルで年月期間を4桁表示したい・続
別名で質問していたのですが、何故かログインできなくなったので改めてこちらで質問させてください(答えてくださった方に返事ができないのが心苦しいですが・・)。 エクセルで着任~退任期間の表を作成しています。 例えばA列が着任でH11.07.01 B列が退任でH13.06.30と入力したら C列に期間(年月)02.00と表示できるようにしたいのです。 ちょうど2年なら2を02.00、1年11ヶ月なら01.11と自動計算するには どういう式を使えばいいのでしょうか? 今までの回答から=datedif(a1,b1,"y")+datedif(a1,b1,"ym")*0.01が一番シンプルな式で4桁表示されるのですが、補足が必要です。 上記例は期間がちょうど2年ですが、01.11と表示されてしまいます。 もし着任がH11.07.10で退任がH13.07.09だと02.00、退任がH13.07.08だと01.11という風に、着任年月日から換算して最後の月が1日でも1ヶ月に満たない場合は0とみなしたいのです。 面倒で申し訳ありませんが、得意な方にご協力いただけたらありがたいです。よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! 参考になるかどうか判りませんが・・・ DATEDIF関数は日付が一致して初めて満○○(年・月)となるはずですので、質問に >着任年月日から換算して最後の月が1日でも1ヶ月に満たない場合は0とみなしたいのです。 とありますので、苦肉の策ですが、 着任日の1日前を計算開始日にするか 退任日の1日後を計算最終日に設定してみてはどうでしょうか? せっかく使っていらっしゃる数式がありますので それを利用させていただくと =DATEDIF((A1-1),B1,"y")+DATEDIF((A1-1),B1,"ym")*0.01 もしくは =DATEDIF(A1,(B1+1),"y")+DATEDIF(A1,(B1+1),"ym")*0.01 としてみてはどうでしょう? 以上、参考になれば幸いですが、 的外れなら読み流してくださいね。m(__)m
その他の回答 (2)
- FEX2053
- ベストアンサー率37% (7995/21381)
datedif関数には有名なバグがあります。 http://www.niji.or.jp/home/toru/notes/50.html ですので、お使いになる場合は「計算結果が求める結果と違う」場合も 出てくることを了解のうえで使って下さい。そうでないなら、かなり 面倒な場合分けをするか、VBAで複雑な関数を組むかして下さい。 期間計算はそうでなくても「1/31の1ヶ月後は何月何日?」という問題 があったりして、一筋縄じゃいかないんですよ。
お礼
ご指摘ありがとうございます。DETEDIFが不安定な関数であることは知っていました。だから公式関数に出てないんですよね? 教えていただいたサイトは勉強になりますので時間があるときにじっくりよませていただきます。 今回は日数計算は必要なかったのと、お二人の式が問題なく使えたので採用させていただきました。 また機会がありましたらよろしくお願いいたします。
- KURUMITO
- ベストアンサー率42% (1835/4283)
退任の日を1日プラスすればよいでしょう。 =DATEDIF(A1,B1+1,"y")+DATEDIF(A1,B1+1,"ym")*0.01
お礼
早々の回答をありがとうございました。無事できました。 計算はあいましたが、表示が2桁になったので焦りましたが 表示形式を変えたら4桁で反映されました。 また機会があればよろしくお願いします。
お礼
早々の丁寧な回答ありがとうございました。無事できました。 「DATEDIF関数は日付が一致して初めて満○○(年・月)となるはず」 色々問題があるとは聞いていましたが、そういう事だったんですね。 勉強になりました。