- ベストアンサー
EXCEL2000でこの日付計算式が組めるかどうか教えてください
日付の計算で参考書に出ていないので、現実的に可能か不可能化すらわかりませんがよろしくおねがいします。 (1)例えば、売上計上日欄を「2002/7/3」と入力すると販促日である2週間後の日にち(2002/7/17)が自動的に入るようする (2)更に販促日によって処理日を振り分けたい。 自動的に入った販促日が月の1~10日の間のものは処理日「20日」 月の11~20日の間のものは処理日「30日」 月の21~30(31)日の間のものは処理日翌月「10日」 最終的には売上計上日をいれただけで、処理日の20日か30日か10日かを自動的にいれられるような計算式を組みたいのです。 (上の(1)の場合は販促日17日なので処理日「30日」という数字が自動的に入る様にしたいのです) よろしくおねがいします。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
再びこんばんは! >末日処理になります。 であれば A2に売上日 B2に販促日 =A2+14 C2に処理日 =DATE(YEAR(B2),MONTH(B2)+(DAY(B2)>20),IF(DAY(B2)<11,20,IF(DAY(B2)<21,MIN(30,DAY(DATE(YEAR(B2),MONTH(B2)+1,0))),10))) で試してみて下さい!
その他の回答 (8)
- papayuka
- ベストアンサー率45% (1388/3066)
こんにちは。 A2に「2002/7/3」 A3に =A2+14 A4に =IF(DAY(A3)<=10,DATE(YEAR(A3),MONTH(A3),20),IF(DAY(A3)<=20,DATE(YEAR(A3),MONTH(A3)+1,-1),DATE(YEAR(A3),MONTH(A3)+1,10))) ↑長いけどひとつの関数です。 月の11~20日の間のものは30日ではなく「月末日の前日」になってます。 2002/05なら2002/05/30 2002/04なら2002/04/29 2002/02なら2002/02/27 2004/02なら2002/02/28 どうしても30日なら、2月の判定を入れなくてはならないので、更に長くなりますね。
お礼
丁寧な回答ありがとうございます。 末日扱いってことを皆様に教えていただき、かなり解決に近づきました。 教えていただいたのを参考に、もう一歩頑張ります!
- bin-chan
- ベストアンサー率33% (1403/4213)
では妥協案。文字列として"末"日で表示。 セルC1に式[=IF(DAY(B71)<11,TEXT(B71,"yyyy/mm/")&"20",IF(DAY(B71)<21,TEXT(B71,"yyyy/mm/末"),TEXT(B71+14,"yyyy/mm/")&"10"))]を設定してください。 2003/01/末 2003/02/10 2003/02/20 2003/02/末 となります。
お礼
丁寧な回答ありがとうございます。 「末日」処理方法が思い付かず苦労しました。 早速教わったのを使って応用させてみます。 あと一日はかかりそうですが頑張ります。
- comv
- ベストアンサー率52% (322/612)
こんにちは・・・! >2003/2/15が販促日だと、 >処理日30日(販促日11~20日まではすべて処理日30>日になります。) >この補足は違いますか?? 補足をお願いしたのは 2月に30日はありえないからです・・・(--;
補足
補足おそくなりすみません~。 そうです、すでにレスしていただいているように 末日処理になります。 かなりいい線まではいったのですが、あともう少しで完成です!! 頑張ります。。。
- comv
- ベストアンサー率52% (322/612)
補足願います。 追加の質問で >更に質問なのですが、この「○日」後と入れた処理を実際>の日付にするにはどうしたらよいでしょうか? とありますが以下のような場合 処理日は? 2003/1/1 売り上げ計上日 2003/2/15 販促日 2003/2/?? ←処理日 1.2月末日(28または29日) 2.3月10日 3.2月20日+10日 4.その他
補足
2003/2/15が販促日だと、 処理日30日(販促日11~20日まではすべて処理日30日になります。) この補足は違いますか?? よろしくおねがいします。
- imogasi
- ベストアンサー率27% (4737/17069)
VLOOKUPを使うと下記になります。 F1からG4までに 1 20 '1-10は20 11 30 '11-20は30 21 10 '21-30は10 31 10 '31は10 の表を作る。 B1からB7に(B7は例で、何処まででも良い) 22002/6/17 2002/6/26 2002/6/27 2002/7/6 2002/7/7 2002/7/16 2002/7/17 C1に式=DAY(B1)を入れ、式をC9まで複写。 D1に式=VLOOKUP(C1,$F$1:$G$4,2)を入れる。 D9まで式を複写する。
補足
回答ありがとうございます。 更に質問なのですが、この「○日」後と入れた処理を実際の日付にするには どうしたらよいでしょうか? 2002/5/10 売り上げ計上日 2002/5/14 販促日 2002/5/30 ←処理日を「30日」と表示させるのではなくこのように日付に。 よろしくお願いします。
- comv
- ベストアンサー率52% (322/612)
こんばんは! 私も1案 A B C 1 計上日 販促日 処理日 2 2002/7/17 式1 式2 式1 =A2+14 式2 =MOD(CEILING(MIN(B2,30)+10,10)-1,30)+1&"日"
補足
回答ありがとうございます。 更に質問なのですが、この「○日」後と入れた処理を実際の日付にするには どうしたらよいでしょうか? 2002/5/10 売り上げ計上日 2002/5/14 販促日 2002/5/30 ←処理日を「30日」と表示させるのではなくこのように日付に。 よろしくお願いします。
- papayuka
- ベストアンサー率45% (1388/3066)
こんにちは。 =IF(DAY(A1+14)<=10,"20日",IF(DAY(A1+14)<=20,"30日","10日")) こんな感じですか?
補足
回答ありがとうございます。 更に質問なのですが、この「○日」後と入れた処理を実際の日付にするには どうしたらよいでしょうか? 2002/5/10 売り上げ計上日 2002/5/14 販促日 2002/5/30 ←処理日を「30日」と表示させるのではなくこのように日付に。 よろしくお願いします。
- bin-chan
- ベストアンサー率33% (1403/4213)
セルA1に売上計上日があるものとします。 セルB1に式[=A1+14]を設定してください。 セルC1に式[=IF(DAY(B1)<11,20,IF(DAY(B1)<21,30,10))]を設定してください。 C1がいまいち美しくないけどいかがですか?
補足
回答ありがとうございます。 更に質問なのですが、この「○日」後と入れた処理を実際の日付にするには どうしたらよいでしょうか? 2002/5/10 売り上げ計上日 2002/5/14 販促日 2002/5/30 ←処理日を「30日」と表示させるのではなくこのように日付に。 よろしくお願いします。
お礼
ついに!解決しました! ありがとうございました。 MIN・・意味がわからず使ってみたら無事解決しました。 ちなみに未だに式は自分なりに解読できてません・・。(^^;)