• ベストアンサー

Excel 年月の差を求めたい

Excel2007です。 年月の差を求めたいのですが 入力の方法と計算式を教えてください。 5年と3年2ヶ月の差を1年2ヶ月と計算したい。 文字列として入力すると計算ができません。 どのように入力して、どのように計算式又は関数を使えばよいか教えてください。 わかり難い質問かも知れませんがよろしくお願いします。

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

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.2

差は1年10ヶ月の間違いでは? もし、入力の仕方自体を変えてもよいのであれば 5年を「5」年「0」ヶ月 3年2ヶ月を「3」年「2」ヶ月 のように年数と月数のみを数値で入力すれば計算は簡単になります。 A1を「5」(年)、B1を「0」(ヶ月) C1を「3」(年)、D1を「2」(ヶ月)とすると 5年を =A1*12+B1 で「60」(ヶ月)とし 3年2ヶ月を =C1*12+D1 で「38」(ヶ月)とし この二つの差を求めて、12で割って整数部分を取り出す =INT(((A1*12+B1)-(C1*12+D1))/12) で、差分の年数「1」(年) この二つの差を求めて、12で割った余りを取り出す =MOD((A1*12+B1)-(C1*12+D1),12) で、差分の月数「10」(ヶ月) が計算できます。 文字列のまま処理しようとするとかなり複雑になります。 A1に「5年」、B1に「3年2ヶ月」が文字列で入っているとすると C列、D列を作業列として、C1に =IF(ISERROR(FIND("年",A1)),0,VALUE(LEFT(A1,FIND("年",A1)-1)))*12+IF(ISERROR(FIND("ヶ月",A1)),0,IF(ISERROR(FIND("年",A1)),LEFT(A1,FIND("ヶ月",A1)-1),MID(A1,FIND("年",A1)+1,FIND("ヶ月",A1)-FIND("年",A1)-1))) と入力してこれをD1にコピー&ペーストすると C1がA1を月数に換算した「60」 D1がB1を月数に換算した「38」 になりますので、E1に =INT((C1-D1)/12)&"年"&MOD(C1-D1,12)&"ヶ月" とすれば、差分「1年10ヶ月」が計算できます。 なお、C1の式は ・A1の文字列から"年"という文字を探し、"年"より前の部分を数値化して12をかけて月数に換算したもの("年"の文字がなければ0) ・A1の文字列から"ヶ月"という文字を探し、"年"という文字があればその次から、なければ最初から"ヶ月"という文字までの部分を抜き出して数値化したもの("ヶ月"の文字がなければ0) を足したものです。

gyouda1114
質問者

お礼

お礼遅れて申し訳ありません。 やはり、月に直して計算する方法が良さそうですね。 今後ともよろしくご指導お願いします。

gyouda1114
質問者

補足

差は、1年10カ月です 齢70直前の前期高齢者、間違いにも気付いていませんでした。

その他の回答 (2)

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.3

こんな方法もあります 入力は 5年 => 500 3年2ヶ月 => 302 という様に、年は百の桁、月は十の桁で入力します セルの書式設定のユーザー定義で  0"年"00"ヵ月" とします 図で C列に =IF(MOD(A1,100)<MOD(B1,100),A1-B1-88,A1-B1) と、式を入れます

gyouda1114
質問者

お礼

お礼遅れて申し訳ありません。 役に立ちました。 今後ともご指導よろしくお願いします。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

通常は年齢計算などで使われる式を使うことでしょう。 例えばA1セルに誕生日、B1セルに評価の年月日とでも入力し、それぞれのデータがA2セルおよびB2セルに入力されているとします。 その時の年齢は次のような式で何年年カ月と求めることができます。 =DATEDIF(A2,B2,"Y")&"年"&DATEDIF(A2,B2,"YM")&"ヵ月" このような式を使うことのできるのはA2セルに例えば1980/1/21,B2セルには2009/10/14のように年月日が入力されていることが必要です。 お示しのケースではA1セルに5年、B1セルに3年2カ月と入力されている状態でその差を求めるのですから上記の式など全く関係ありませんね。 次のような式になるでしょう。 =DATEDIF(IF(ISERROR(FIND("カ月",B1)),SUBSTITUTE(B1,"年","/1/1"),SUBSTITUTE(SUBSTITUTE(B1,"年","/"),"カ月","/1"))*1,IF(ISERROR(FIND("カ月",A1)),SUBSTITUTE(A1,"年","/1/1"),SUBSTITUTE(SUBSTITUTE(A1,"年","/"),"カ月","/1"))*1,"Y")&"年"&(DATEDIF(IF(ISERROR(FIND("カ月",B1)),SUBSTITUTE(B1,"年","/1/1"),SUBSTITUTE(SUBSTITUTE(B1,"年","/"),"カ月","/1"))*1,IF(ISERROR(FIND("カ月",A1)),SUBSTITUTE(A1,"年","/1/1"),SUBSTITUTE(SUBSTITUTE(A1,"年","/"),"カ月","/1"))*1,"YM")-1)&"カ月"

gyouda1114
質問者

お礼

御礼遅れて申し訳ありません。 教えていただいた式複雑で齢70直前の老爺にはちょっと難しすぎます 他の方の式を検討させていただきます。 今後ともご指導ください。