- ベストアンサー
再 エクセル 2月など31日が無い場合の・・・
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
かなり長い式になりますが以下の式でどうでしょうか。 =IF(DAY(E31)>A31,IF(A31>DAY(DATE(YEAR(E31),MONTH(E31)+1,A31)),DATE(YEAR(E31),MONTH(E31)+2,1)-1,DATE(YEAR(E31),MONTH(E31)+1,A31)),IF(A31>DAY(DATE(YEAR(E31),MONTH(E31),A31)),DATE(YEAR(E31),MONTH(E31)+1,1)-1,DATE(YEAR(E31),MONTH(E31),A31)))
その他の回答 (6)
- ASIMOV
- ベストアンサー率41% (982/2351)
- MackyNo1
- ベストアンサー率53% (1521/2850)
元の数式のIF関数の使い方が間違えています(結果的に同じ値になりますが)。 イメージとしては、元の式で計算した数式の日がA列の値と等しい場合は、元の数式の日付、等しくない場合は求めた日付の翌月の0日(すなわち当月の月末)にする数式にします。 =IF(DAY(DATE(YEAR(E31),MONTH(E31)+(DAY(E31)>A31),A31))=A31,DATE(YEAR(E31),MONTH(E31)+(DAY(E31)>A31),A31),DATE(YEAR(E31),MONTH(E31)+(DAY(E31)>A31)+1,0))
- chonami
- ベストアンサー率43% (448/1036)
長くなりますが、B31に =IF(MONTH(E31)=MONTH((DATE(YEAR(E31),MONTH(E31),A1))),DATE(YEAR(E31),MONTH(E31),A31),DATE(YEAR(E31),MONTH(E31)+1,0)) 締め日を計算した日付と納入日の月が違っていたら当月の月末。 そうでなければ締め日をそのまま出すようになってます。
お礼
ありがとうございます。 回答頂いた式でやってみました。 納入日が締め日よりも前ならうまくいきますが、締め日の後でもその月を示してしまいます。 20日締めで2/25が納品日なら、3/20になりたいのですが・・・。
- DOUGLAS_
- ベストアンサー率74% (397/534)
>締め日が31日 「締め日」 が「30日」や「29日」の場合はありませんか? なければ、[ツール(T)] - [アドイン(I)] で「分析ツール」に チェック を入れて、B7 セルに =EOMONTH(E7,0) と入力すれば、「2010/2/28」と表示されます。 「締め日」 が「30日」や「29日」の場合があるようでしたら、別途、策を講じなければなりません。
- KURUMITO
- ベストアンサー率42% (1835/4283)
納入日が2/17で締め日が31日。2010/2/28にしたい。 次のような式にします。 2/17がA1セルにあるとしたら =DATE(YEAR(A1),MONTH(A1)+1,0)
- akiomyau
- ベストアンサー率43% (555/1280)
式の関係が書かれていないので考え方のみを記載します。 31日という日付では無く、月末にするという式にすれば 日付がずれることは無いと思います。 例えばA1に日付があるとしてこの日の月末を出す式とすれば =DATE(YEAR(A1),MONTH(A1)+1,1)-1 とすれば当月の月末になります。 翌月であれば =DATE(YEAR(A1),MONTH(A1)+2,1)-1 といった式になります。
お礼
早速のご回答ありがとうございます。 現在、式は下記のようになっています。(画像青線は31行目に存在。) =DATE(YEAR(E31),MONTH(E31)+IF(31,DAY(E31)>A31),IF(31,A31)) 教えていただいた式を入れてみたらうまくいきましたが、締め日に関係なく月末になってしまいます。 締め日が15日だと2/15、20日なら2/20、25日なら2/25としたいのですが。 上記の式にakiomyauさん回答の式を入れることは可能なのでしょうか?
お礼
ありがとうございます。 理想通りになりました! 年月もちゃんと繰り越しします。 長い式を作っていただいて、ありがとうございました! また、誠に勝手ですが解決いたしましたので、質問を締め切らさせていただきます。 その他回答してくださった方々もこの場をお借りしてお礼を言わせていただきます。 ありがとうございました。