[[20150718175156]] 『日付をIF関数の論理式にしたい』(キク) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付をIF関数の論理式にしたい』(キク)

校内全文検索を眺めたのですが、見つからなかったので、初めて質問させていただきます。初心者なので、よろしくお願いします。

A列に日付があり、B列に、A列の日付が当月末日だったら2ヵ月後の年月を、そうでない場合は1ヵ月後の年月を表示させたいのですが、うまくいきません。どなたか教えてください。

B列は表示形式を「2015/07」のように設定しました。
B1セルの数式は、下の通りです。

=IF(A1=EOMONTH(A1,0),DATE(YEAR(A1),MONTH(A1)+2,DAY(A1)),DATE(YEAR(A1),MONTH(A1)+1,DAY(A1)))

これだと、A列の日付が、7/31,12/31,1/30のみ正しい値が求められず困っています。
よろしくお願いいたします。

    A列       B列
1 2015/10/30   2015/11
2 2015/10/31    2015/12
3 2015/07/31    2015/10 ← 2015/09が正しい
4 2016/01/30    2016/03 ← 2016/02が正しい
5 2015/12/31    2016/03 ← 2016/02が正しい

< 使用 Excel:Excel2013、使用 OS:Windows7 >


=EDATE(A1+1,1)

(マナ) 2015/07/18(土) 18:40


 6/30 の2か月後は 8/30 ですか? 8/31 ですか? (つまり、月末日は結果も月末日?)

 それとも、表示が yyyy/mm なので、どちらでもよい?

 では、12/31 の2か月後はどうなりますか?

(β) 2015/07/18(土) 18:54


マナさん、ありがとうございます。
βさん、表示が yyyy/mm なので、どちらでもよいです。
12/31の2か月後は、2月と表示させたいです。
よろしお願いします。


 すでに適切な回答がありますが、念のため。

 =IF(A1=EOMONTH(A1,0),
     DATE(YEAR(A1),MONTH(A1)+2,DAY(A1)),
     DATE(YEAR(A1),MONTH(A1)+1,DAY(A1)))
 を2015/7/31にすると、なぜ所望する結果が出ないのか、
 検討していますか?

 A1=EOMONTH(A1,0)はTrueになるので、
     DATE(YEAR(A1),MONTH(A1)+2,DAY(A1))
 を返します。

 それは、    
     DATE(2015,9,31)
 となりますね。
 9/31はなく、それは10月を意味するので、
 10月が返るわけですね。

 年月だけが知りたいのであれば、    
     DATE(YEAR(A1),MONTH(A1)+2, 1)
 と 1日 と決め打ちしてしまってはどうですか?
 もうひとつの(FALSEのほう)も同様にします。

(γ) 2015/07/18(土) 19:18


γさん、ありがとうございました。
DATE(YEAR(A1),MONTH(A1)+2, 1)
で解決しました。

理由も教えていただいたので、よくわかりました。
本当にありがとうございます。
キク 2015/7/18 19:26


 >=EDATE(A1+1,1) 
 >(マナ) 2015/07/18(土) 18:40 

 たったこれだけで済むのに、なんで採用されないんですかね?

(半平太) 2015/07/18(土) 19:36


半平太さん、ありがとうございます。

すみません。超初心者なので、EDATEの意味さえままならず、この式をどこに入れてよいのかもわからず、今やっと、関数の項目から意味を探し当てて、わかりました!!

こんなに短い式で済んだのですね。
本当にありがとうございました。
(キク) 2015/7/18(土) 20:21


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.