- ベストアンサー
特定期間内の月数の計算方法
- 特定の期間内に何か月あるかを計算する方法を教えてください。
- 具体的には、平成20年1月1日から平成27年7月31日の間で、1)平成19年1月1日から平成20年5月31日まで、2)平成22年1月1日から平成22年12月31日まで、3)平成27年1月1日から平成27年8月31日まで、それぞれ何か月あるかを教えてください。
- また、A1に平成20年1月1日、A2に平成27年7月31日を入力し、B1に数える初めの年月日、B2に数える最後の年月日を入力すると、月数の計算結果が得られる式を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
=DATEDIF(MAX(A1,B1),MIN(A2,B2),"m")+1 「DATEDIF」は「特定の条件化で計算を誤る不具合がある」ので「サポート対象外の関数」になっていて「公式には存在しない関数」なので注意して下さい。 なお、ご質問のケースで使うには「特定の条件」に一致しないので、問題は出ません。
その他の回答 (3)
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
更なる追記。 まず「計算したい期間の開始日」を考えます。 >平成20年1月1日から >1.平成19年1月1日から 計算期間の「開始日」は「大きい方」つまり「平成20年1月1日」になります。 >平成20年1月1日から >2.平成22年1月1日から 計算期間の「開始日」は「大きい方」つまり「平成22年1月1日」になります。 >平成20年1月1日から >3.平成27年1月1日から 計算期間の「開始日」は「大きい方」つまり「平成27年1月1日」になります。 この事から「計算したい期間の開始日」は「MAX(A1,B1)」になります。 次に「計算したい期間の終了日」を考えます。 >平成27年7月31日の間で、 >1.(略)から平成20年5月31日まで 計算期間の「終了日」は「小さい方」つまり「平成20年5月31日」になります。 >平成27年7月31日の間で、 >2.(略)から平成22年12月31日まで 計算期間の「終了日」は「小さい方」つまり「平成22年12月31日」になります。 >平成27年7月31日の間で、 >3.(略)から平成27年8月31日まで 計算期間の「終了日」は「小さい方」つまり「平成27年7月31日」になります。 この事から「計算したい期間の終了日」は「MIN(A2,B2)」になります。 「計算したい期間の開始日」から「計算したい期間の終了日」の「月数」を計算するのは「DATEDIF(開始日,終了日,"m")」で計算できます。 「開始日と終了日が同じ月」の場合、DATEDIFは「0」と返すので、DATEDIFの結果に「+1」して「DATEDIF(開始日,終了日,"m")+1」にします。 開始日は「MAX(A1,B1)」で、終了日は「MIN(A2,B2)」で求まるのですから、これを「DATEDIF(開始日,終了日,"m")+1」に当て嵌めると =DATEDIF(MAX(A1,B1),MIN(A2,B2),"m")+1 という式が完成します。 このように「何を計算すべきか、バラバラにして1つづつ考え、末端から積み上げていく」と、問題を解決できます(これを「ボトムアップ方式」と言います)
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
追記。 A1とA2の期間、B1とB2の期間について「開始日と終了日が逆になっている場合」は、正常に動作しません(「#NUM!」というエラーになります) また、B1、B2で示された期間が、A1、A2で示された期間を逸脱している場合(言い換えれば「重なりが無い場合」)、つまり「B2がA1よりも前」や「B1がA2よりも後」になっている場合も、正常に動作しません(「#NUM!」というエラーになります) また、結果は「数値」で求まるので、結果を出す式のセルの表示書式を「ユーザー定義」にして、定義内容を「#,##0"ヶ月"」にすれば「5ヶ月」のように表示されます。 「文字列で結果が欲しい」という場合は、式を =DATEDIF(MAX(A1,B1),MIN(A2,B2),"m")+1&"ヶ月" に変更します(文字列で結果を返す場合は、セルの表示書式は「文字列」にしましょう)
- nabe3desu
- ベストアンサー率46% (253/550)
=datedif(B1,B2,"Y")で年数 =datedif(B1,B2,"M")で月数 =datedif(B1,B2,"D")で日数 が表示されます。ちなみに、ご質問の1.は19ヶ月、3.は8ヶ月のじゃないでしょうか?