• ベストアンサー

再 エクセル 2月など31日が無い場合の・・・

画像添付失敗のため、再投稿です。ご迷惑申し訳ありません。 現在、納入日を入力すると締め日に対して今月か翌月かを振り分けられるようにしてあります。(このサイトの力をお借りして作成しました。) 2月分の入力をすると、31日が無いので月末締めの客先の場合、翌月になってしまいました。2月や4月など、31日が無い月に対応するにはどうすればよいのでしょうか? 説明下手なので、画像添付します。 画像説明 納入日が2/17で締め日が31日。2010/2/28にしたい。 宜しくお願いいたします。

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

  • ベストアンサー
  • akiomyau
  • ベストアンサー率43% (555/1280)
回答No.5

かなり長い式になりますが以下の式でどうでしょうか。 =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)))

mohjoo
質問者

お礼

ありがとうございます。 理想通りになりました! 年月もちゃんと繰り越しします。 長い式を作っていただいて、ありがとうございました! また、誠に勝手ですが解決いたしましたので、質問を締め切らさせていただきます。 その他回答してくださった方々もこの場をお借りしてお礼を言わせていただきます。 ありがとうございました。

その他の回答 (6)

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

「31」は月末という意味なんですよね であれば、 A列の締め日を A2=IF(RIGHT(F2,2)="31",DAY(DATE(YEAR(E2),MONTH(E2)+1,0)),RIGHT(F2,2)+0) として、実際の月末の「日」を表示し B列、請求月を B2 =DATE(YEAR(E2),MONTH(E2)+(A2<DAY(E2)),1) としてはどうでしょうか

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

元の数式の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)
回答No.4

長くなりますが、B31に =IF(MONTH(E31)=MONTH((DATE(YEAR(E31),MONTH(E31),A1))),DATE(YEAR(E31),MONTH(E31),A31),DATE(YEAR(E31),MONTH(E31)+1,0)) 締め日を計算した日付と納入日の月が違っていたら当月の月末。 そうでなければ締め日をそのまま出すようになってます。

mohjoo
質問者

お礼

ありがとうございます。 回答頂いた式でやってみました。 納入日が締め日よりも前ならうまくいきますが、締め日の後でもその月を示してしまいます。 20日締めで2/25が納品日なら、3/20になりたいのですが・・・。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.3

>締め日が31日  「締め日」 が「30日」や「29日」の場合はありませんか? なければ、[ツール(T)] - [アドイン(I)] で「分析ツール」に チェック を入れて、B7 セルに =EOMONTH(E7,0) と入力すれば、「2010/2/28」と表示されます。  「締め日」 が「30日」や「29日」の場合があるようでしたら、別途、策を講じなければなりません。

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

納入日が2/17で締め日が31日。2010/2/28にしたい。 次のような式にします。 2/17がA1セルにあるとしたら =DATE(YEAR(A1),MONTH(A1)+1,0)

  • akiomyau
  • ベストアンサー率43% (555/1280)
回答No.1

式の関係が書かれていないので考え方のみを記載します。 31日という日付では無く、月末にするという式にすれば 日付がずれることは無いと思います。 例えばA1に日付があるとしてこの日の月末を出す式とすれば =DATE(YEAR(A1),MONTH(A1)+1,1)-1 とすれば当月の月末になります。 翌月であれば =DATE(YEAR(A1),MONTH(A1)+2,1)-1 といった式になります。

mohjoo
質問者

お礼

早速のご回答ありがとうございます。 現在、式は下記のようになっています。(画像青線は31行目に存在。) =DATE(YEAR(E31),MONTH(E31)+IF(31,DAY(E31)>A31),IF(31,A31)) 教えていただいた式を入れてみたらうまくいきましたが、締め日に関係なく月末になってしまいます。 締め日が15日だと2/15、20日なら2/20、25日なら2/25としたいのですが。 上記の式にakiomyauさん回答の式を入れることは可能なのでしょうか?

関連するQ&A

専門家に質問してみよう