• ベストアンサー

エクセルの期間数(年月数)の合計について

エクセルで、期間数の集計をしようとしているのですが、どなたか合計の仕方を教えてください。 表示は、 ○年○ヶ月 ○年○ヶ月 の合計でもよいですし、 13.2 14.11 10.8 の表示で、月数が12ヶ月以上になったときにきちんと年数に加算されるような計算式を教えてください。 お忙しいところすみませんがよろしくご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • S-Fuji
  • ベストアンサー率36% (592/1624)
回答No.1

過去ログに、私の解答があります。 参考にどうぞ http://okwave.jp/kotaeru.php3?q=1864271

参考URL:
http://okwave.jp/kotaeru.php3?q=1864271
yumie6616
質問者

補足

お世話になります。 私の質問が言葉不足ですみませんでした。 質問の 13.2 14.11 10.8 とは、 13年2ヶ月 14年11ヶ月 10年8ヶ月 という意味で、それの合計期間を37・21と表示させずに、38・9(38年9ヶ月)になりませんか? という意味だったのですが。。。 もしお分かりになればお教えください。

その他の回答 (4)

noname#22222
noname#22222
回答No.5

s_husky です。 どうして、1.12という入力であれば... Public Function SumYYMM(ByVal shtName As String, ByVal strRange As String) As Integer   Dim A As Range   Dim Y As Integer   Dim YY As Integer   Dim MM As Integer     For Each A In Worksheets(shtName).Range(strRange)     Y = Int((A.Value*100) / 100) * 100     YY = YY + Y     MM = MM + (A.Value*100) - Y   Next A   SumYYMM = (YY + (MM \ 12) * 100 + MM Mod 12)/100 End Function 0.12 とうを合算していくと 1.56なども発生します。 この場合、1=100ヶ月ということになります。 整数部と少数部を別々に計算せざるをえない理由です。

yumie6616
質問者

お礼

s husky様 お忙しいところ、何度も教えていただきありがとうございます。教えていただいたのはプログラムでしょうか? 折角教えていただいたのに、私の知識不足で理解が出来ませんでした。すみません。 本当にありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

#3です。 13.02 14.11 10.08 のように 小数点以下2桁で月を表す時 A1:A10の範囲に該当データがあるとすると 以下のような感じで良いと思います。 =SUMPRODUCT(TRUNC(A1:A10))+INT(SUMPRODUCT(MOD(A1:A10,1))/0.12)+MOD(SUMPRODUCT(MOD(A1:10,1)),0.12)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

質問文のような書式で入力する場合 1年1ヶ月と1年10ヶ月はどちらも 1.1 となって区別がつかないように思いますが・

noname#22222
noname#22222
回答No.2

A1:入力[1201]-->表示[12年01ヶ月] A2:入力[_110]--->表示[_1年10ヶ月] A3:入力[__12]--->表示[_0年12ヶ月] A10: SUM((A1:A9) ---> 13年23ヶ月 と表示されます。 A10:sumyymm("Sheet1", "A1:A9") ---> 14年11ヶ月 という解決を欲するのであれば、 計算式ということでは、割りと面倒なようです。 VBAで関数を作成すると、次のようで事足りると思います。 Public Function SumYYMM(ByVal shtName As String, ByVal strRange As String) As Integer   Dim A As Range   Dim Y As Integer   Dim YY As Integer   Dim MM As Integer     For Each A In Worksheets(shtName).Range(strRange)     Y = Int(A.Value / 100) * 100     YY = YY + Y     MM = MM + A.Value - Y   Next A   SumYYMM = YY + (MM \ 12) * 100 + MM Mod 12 End Function

関連するQ&A