- ベストアンサー
エクセルで年月の合計を求める関数を教えてください。
A列 B列 C列 2000/4/1 2002/3/31 2年 2002/4/1 2004/9/30 2年6ヶ月 2005/4/1 2005/6/30 3ヶ月 として,C列の関数は(=TEXT(DATEDIF(A1,BI,"Y"),"0年;;")&TEXT(DATEDIF(A1,B1,"YM"),"0ヶ月;;")としています。 そこで,C列のみで(空白期間があるので)年月を合計する関数を教えてください。 (上記の例の場合,4年9ヶ月となるように) よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
実用性を考えれば、期間の年と月を2列に分けるという方法もあるのではないでしょうか。 たとえば、C列は「=DATEDIF(A1,B1,"Y")」で表示形式を「0"年";;」とし、D列は「=DATEDIF(A1,B1,"YM")」で表示形式を「0"ヶ月";;」とする。 こうすれば年合計は「=SUM(C:C)+INT(SUM(D:D)/12)」、月合計は「=MOD(SUM(D:D),12)」で、表示形式も同様に設定すればOKですよね。罫線の引き方とか工夫すれば、元の表と見た目もあまり変わらないし、よろしかったら検討してみてください。
その他の回答 (2)
- mu2011
- ベストアンサー率38% (1910/4994)
C列が文字列の為、AB列で計数しましたが如何でしょうか。 =TEXT(SUMPRODUCT(DATEDIF(A1:A10,B1:B10+1,"Y"))+INT(SUMPRODUCT(DATEDIF(A1:A10,B1:B10+1,"YM"))/12),"0年;;;")&TEXT(MOD(SUMPRODUCT(DATEDIF(A1:A10,B1:B10+1,"YM")),12),"0ヶ月;;;")
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 No.1723754『エクセルで年月の合計の関数を教えてください。 』の#3で回答したWendy02です。一言、コメントぐらいはつけてくださいね。(^^; =TEXT(INT(SUMPRODUCT(INT(DATEDIF(A1:A3,B1:B3,("M"))))/12),"0年;;")&TEXT(MOD(SUMPRODUCT(INT(DATEDIF(A1:A3,B1:B3,("M")))),12),"0ヶ月;;") 2000/4/1 2002/3/31 2年 ←2年にはなりません。1年と11ヶ月です。 現在は、片入れ計算になっていますから、両入れ計算の場合は、B列側に、以下のように、1日足さなくてはなりません。 =TEXT(INT(SUMPRODUCT(INT(DATEDIF(A1:A3,B1:B3+1,("M"))))/12),"0年;;")&TEXT(MOD(SUMPRODUCT(INT(DATEDIF(A1:A3,B1:B3+1,("M")))),12),"0ヶ月;;") >C列のみで(空白期間があるので)年月を合計する関数を教えてください。 というのでしたら、不十分(年のみの計算が抜けている)ですが、このような計算になります。 =SUM(IF(ISERROR(FIND("年",C1:C3)-1),0,LEFT(C1:C3,FIND("年",C1:C3)-1)*1))+INT(SUM(IF(ISERROR(FIND("年",C1:C3)),SUBSTITUTE(C1:C3,"ヶ月","")*1,SUBSTITUTE(MID(C1:C3,FIND("年",C1:C3)+1,4),"ヶ月","")*1))/12)&"年"&MOD(SUM(IF(ISERROR(FIND("年",C1:C3)),SUBSTITUTE(C1:C3,"ヶ月","")*1,SUBSTITUTE(MID(C1:C3,FIND("年",C1:C3)+1,4),"ヶ月","")*1)),12)&"ヶ月" なお、この式は、配列数式ですから、配列確定が必要になります。このように、文字列での計算の場合は、ユーザー定義関数というもののほうが便利です。
お礼
ありがとうございます。頑張ってみます。
お礼
思ったとおりにできました。どうもありがとうございました。