• 締切済み

指定日を求めるエクセル関数を教えてください。

セルA1へ集金日を入力すると、B1へ処理日を自動で表示させたいのですが、例えば、 H18.12.26からH19.1.25までに集金がおこなわれたら処理日はすべてH19.2.10 H19.1.26からH19.2.25までに集金がおこなわれたら処理日はすべてH19.3.10 セルA1(集金日)  H19.1.1  セルB1(処理日)  H19.2.10 日付範囲の条件により指定日を求めたいのですが、よろしくお願いします。

みんなの回答

回答No.5

#1です。 また見落としがあったみたいですね。 vizzarさん、ご指摘ありがとうございます。 =IF(DAY(A1)<26,DATE(YEAR(A1),MONTH(A1)+1,10),DATE(YEAR(A1),MONTH(A1)+2,10)) で 翌々月10日になります。

noname#79209
noname#79209
回答No.4

#2です。 #1さんの式では、H18.12.26だと処理日がH19.1.10になってしまいます。 26日から月末までの日付の場合は翌々月の10日を処理日にしたいのですから... しかしながら、私の式も、 =DATE(YEAR(A1),MONTH(EDATE(A1,1+IF(DAY(A1)>締め日,1,0))),10) で充分でしたね。 IF関数を使うとき、計算式の一番外側で使ってしまいがちですが、 中の方でデータを切り替える為に使った方が、式全体がすっきりすることが多いです。 IFを使わないのであれば、 =DATE(YEAR(A1),MONTH(EDATE(A1,1+(DAY(A1)>締め日))),10) でOKです。 (DAY(A1)>締め日)は、26日以降なら「1」、そうでないなら「0」となるので、そのまま数値として使えます。 このように比較演算を括弧でくくれば、そのまま「0」あるいは「1」として評価されます。

88BLUEBLUE
質問者

お礼

ご回答ありがとうございます。 解説もつけてくださり助かります。 この後早速ためしてみます。 ありがとうございました。

回答No.3

#1です。 すみません。締め日が25日だと勘違いしていました。 10日の場合は ↓の通りにしてください =IF(DAY(A1)<26,DATE(YEAR(A1),MONTH(A1),10),DATE(YEAR(A1),MONTH(A1)+1,10))

88BLUEBLUE
質問者

お礼

お礼がおくれて申し訳ありません。 早速試してみます。 いろいろなパターンがあったので、回答が複数得られて大変助かります。ありがとうございました。

noname#79209
noname#79209
回答No.2

要は、締め日が25日で、処理日が締め日の翌月10日ですよね。 =DATE(YEAR(EDATE(A1,1+IF(DAY(A1)>締め日,1,0))),MONTH(EDATE(A1,1+IF(DAY(A1)>締め日,1,0))),10) で如何でしょう。 DATE関数でYEARの部分もいじっているのは、12月のときの対応です。 ただしEDATE関数は、「ツール」-「アドイン」で「分析ツール」にチェックを入れないと使えません。 また、「挿入」-「名前」-「定義」で、 「名前」に"締め日"、「参照範囲」に"=25"を設定しておき、上記のような数式に名前を使うことができ、 今後、締め日が変更された場合、この名前の「参照範囲」を一カ所変更するだけで済みます。 それに、数式が何をしているのか解りやすくなるという利点もあります。

回答No.1

B1セルに =IF(DAY(A1)<26,DATE(YEAR(A1),MONTH(A1),25),DATE(YEAR(A1),MONTH(A1)+1,25)) でいかがでしょうか。 25日までなら当月の25日、26日以降なら翌月25日を返します。

関連するQ&A