• ベストアンサー

エクセルの日付計算

エクセルの日付計算 A1に1ヶ月、2ヶ月と、プラスしたい月や年を記載します。 A2には、ある日の日付が入っています。 A3には、A1+A3で表示させたいのですが・・・・。 1ヶ月=何日ではなく、A2の日付プラス1月で月だけをプラスさせたいのです。 日はそのままで、月だけをかえるにはどうしたらいいでしょうか? おしえてください。

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

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

プラスしたい月数や年数のデータ形式は変えられないのでしょうか? 「1ヶ月」「1年2ヶ月」などは、データの形式が「文字列」なので 計算に使うにはちょっと一手間かかるのですが… A1に入れる値を「1ヶ月」「2ヶ月」のような形ではなく 月数を数値で、つまり1ヶ月→「1」、2ヶ月→「2」、1年→「12」 という形で入力してよいのであれば、A3の式は =DATE(YEAR(A2),MONTH(A2)+A1,DAY(A2)) となります。 ただこれには難点があって(No.2さんもおっしゃっていますが) 例えば1月29日の1ヶ月後は2月29日ですが、今年は28日しかありませんよね。 この場合1月29日の1ヶ月後は3月1日と計算されます。 同様に、1月30日の1ヶ月後は3月2日、1月31日の1ヶ月後は3月3日 と計算されてしまいます。 これを回避しようとすると =IF(MONTH(DATE(YEAR(A2),MONTH(A2)+A1,DAY(A2)))<>MONTH(DATE(YEAR(A2),MONTH(A2)+A1,1)),DATE(YEAR(A2),MONTH(A2)+A1+1,0),DATE(YEAR(A2),MONTH(A2)+A1,DAY(A2))) とすれば○ヶ月後の同日日付がない場合、月末の日付 (1月29日~31日の1ヶ月後は、2月28日) =IF(MONTH(DATE(YEAR(A2),MONTH(A2)+A1,DAY(A2)))<>MONTH(DATE(YEAR(A2),MONTH(A2)+A1,1)),DATE(YEAR(A2),MONTH(A2)+A1+1,1),DATE(YEAR(A2),MONTH(A2)+A1,DAY(A2))) とすれば○ヶ月後の同日日付がない場合、更に翌月の1日の日付 (1月29日~31日の1ヶ月後は、3月1日) となります。

orange965135
質問者

お礼

なるほど。 日付の問題がでてくるのですね。 とりあえずは、29日という異例を除いて表を作ることにしました。 一つ前のお礼にも書かせていただきましたが、 =DATE(YEAR(A2),MONTH(A2)+A1,DAY(A2)) の式をいれた場合、その期間の表示がおかしくなってしまいました。 1/15 と 2/15 の間は31日ですが、2/15に式をいれると、31と表示されるところがエラーになりました。 もし、わかるようでしたら、そちらも教えてください・・・。

orange965135
質問者

補足

すみません。 セルの表示方法をかえたら、きちんとでてきました! これで締め切ります。 とってもわかりやすい回答、みなさまありがとうございました。 これからも他の式は使えそうなので、こちらをベストアンサーに選びたいと思います。 たすかりました。

その他の回答 (4)

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

日はそのままで月だけを変えるでしたね。 その場合にはC1セルには次の式を入力してセルの表示形式でm月d日などとすればよいでしょう。 =DATE(YEAR(A2),MONTH(A2)+A1,DAY(A2))

orange965135
質問者

お礼

この方法で、できました。 が、もうひとつ問題が発生・・・。 B1-C1(上記の式に変更)=30か31 と、実際の月日の計算もベツのセルで表示させています。 エラーがでてしまいました・・・・。

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

例えば1ヶ月をA1セルに入力する際は1と、1年1ヶ月でしたら13と入力するとします。 A2セルには日付で例えば2010/4/8と入力して表示形式の日付で4月8日のように表示させているとします。 A3セルには次の式を入力すればよいでしょう。 =TEXT(DATE(YEAR(A2),MONTH(A2)+A1,DAY(A2)),"m")

  • FEX2053
  • ベストアンサー率37% (7991/21370)
回答No.2

3月31日の翌月は何月何日、という問題が解決しないと。 とりあえず、3月31日の翌月は5月1日でいいのなら。 =DATE(YEAR(A1),MONTH(A1)+1,DAY(A1)) これで出てきます。DATE関数は =DATE(2010,4,31)=2010/5/1 =DATE(2010,13,3)=2011/1/3 と計算してくれますので。

回答No.1

メニューの「ツール」「アドイン」で「分析ツール」をインストールしてから、A3セルに =EDATE(A2,A1) と入力し、セルの表示形式を「日付」にします。

関連するQ&A

専門家に質問してみよう