• ベストアンサー

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直前の老爺にはちょっと難しすぎます 他の方の式を検討させていただきます。 今後ともご指導ください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで二つの年月の差を求めたいのですが、、、

    よろしくお願いします。 エクセルの表に、  A   B   C   D  E (年) (月) (年) (月) 41   6   46   5 というように、二つの年月数が入っています。 この表でいう、46年5ヶ月と41年6ヶ月の差の期間を求めて、 その値をEに入れたいと思っております。 が、ちょっと複雑で、 例えばこれでいうと、4年11ヶ月となりますが、この場合4年を1ヶ月でも超えているので、数値を5年としてEの列に値を入れたいのです。 計算値が3年0ヶ月などになった場合は3年ですが、3年1ヶ月となった場合は4年としたいのです。 何か良い方法はありますでしょうか。 ご指南よろしくお願いいたします。

  • 文字列を年月に変換して、差を月数で計算したい

    アンケートで6ケタで回答してもらった年月(例:201012)の2つの数値を計算して、差を月数で出したいのですが、どのようにしたら良いでしょうか?  例えば、下記のA-Bの差を月数で出したいのですが、どのような関数(あるいは方法)を使えば良いか教えてください。 例)  年月 A 201012 B 200511

  • EXCEL 当月以前の年月を取得する (日付関数)

    A1列に 『200703』と入力した時、入力した年月より 6ヶ月以前の年月を取得したいのですが、どのような 日付関数を使用してよいのか教え願います。 尚、表示結果のイメージを下記に示します。 【表示結果】   A2列に 『200702』   A3列に 『200701』   A4列に 『200612』   A5列に 『200611』   A6列に 『200610』  と表示させたいです。 宜しくお願いします。

  • Excel日付の部分一致(年月が一致)検索する関数について教えてくださ

    Excel日付の部分一致(年月が一致)検索する関数について教えてください。 A列に日付データがあります。 A列が2010年3月だったら、B列に、1003 2010年4月だったら、1004、以下末尾を+1を反映させる関数を教えてください。 A列         B列 2010/3/6 10:23:19  1003 2010/5/6 9:23:19  1005

  • Excelで文字列を数式として認識させる関数

    A列に入力された文字列(例:"1+1")を、B列でA列の文字列(数式)の計算結果を算出させたいのですが、そのような関数ありますか? できれば、VBAではなくExcelでやりたいです。 OSはXP、Excel2003です。 よろしくお願いします。

  • Excel 分数の入力

    Excel2003です 分数の入力方法を教えてください 0と半角スペース1/2で1/2と表示され計算に使えますが 0と半角スペース2/2と入力すると1となってしまいます。 2/2と表示するとともに、計算に使いたいのですが入力方法を教えてください。 文字列として入力する方法は判っています。

  • エクセルで2つの日付・時間の差を求める

    エクセルの関数について教えてください。 たとえば、A列(締切日)に7/15/2009, B列(提出日)に7/16/2009とあります。この差をC列に計算をさせたいと思っています。(B-Aで差は1日)一方、A列に7/31/2009, B列に7/26/2009とあったらB-Aで-5日(マイナス5日の遅れ)、と出したいと思います。 これはどのような関数を使えばよいのでしょうか?よろしくお願いいたします。

  • Excel 年月表示の変更

    セルの中に" 98/ 3"や" 04/10"と入力されたセルがあり、文字の前や間にあるスペース取りたいので置換を使ってやるのですが、"Mar-98""4月10日"となってしまいます。セルの書式を文字列にしても、変換後のセルの書式設定を文字列にしてもダメです・・・。最終的には"1998/3"や"2004/10"と言う表示にしたいのですが・・・。ご教授お願いします。 ちなみに、WindowsXP Excel2003です。

  • 入力した期間の年月を求めたい。

    VB2005、FlexGrid.NET環境です。 フォームにDateTimePickerが2つあり、そこに入力した期間の ぶんだけ、Gridに列を作りたいと思ってます。 具体的には、2つのコントロールにそれぞれ2005/01/01、 2006/01/01と入力した場合、2005/01、2005/02、2005/03…2006/01 まで、入力した間の具体的な年月を求めて、それをヘッダとして Gridに列追加したいのです。 前回質問させていただいて、単純に列だけを追加することは 出来ましたが、ヘッダに入力する年月をどう作るか悩んでいます。 ご教授いただけないでしょうか?

  • エクセルで年月の合計を求める関数を教えてください。

      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ヶ月となるように) よろしくお願いします。

このQ&Aのポイント
  • Windows10から11にアップデート後、キャノのプリンターで印刷ができなくなりました。問い合わせた結果、エレコムにルーター制限の解除を求められました。
  • キャノのプリンターがWindows10から11にアップデート後に印刷不能になりました。問い合わせた結果、エレコムにルーター制限の解除を要請されました。
  • Windows10から11にアップデート後、キャノのプリンターで印刷できなくなりました。問い合わせた結果、エレコムにルーター制限の解除を依頼することになりました。
回答を見る

専門家に質問してみよう