プロが教える店舗&オフィスのセキュリティ対策術

エクセルで、(A1)に日付を入れ、(A2)に期限を入れ、(A3)に(A2)の期限のさらに1ヶ月前にアラートを表示する、というような設定は可能でしょうか。

具体的なイメージとしては、(A1)2011年7月30日、(A2)1ヶ月、とすると、(A3)では2011年6月1日になるとアラートが表示される(表示は、「○」とか「!」で構いません。)、という感じにできたらと思ってます。

ご教示頂けると幸いです。よろしくお願いいたします。

A 回答 (6件)

 ANo.1です。


 申し訳御座いません、質問内容を勘違いしておりました。
 アラートが表示される最初の日が、2011年6月1日ではなく、2011年5月31日ならば多少楽だったのですが、A1で指定した日付の、A2で指定した期間だけ前の日、の翌日の、更に1ヶ月前の日以降になると、アラートを表示させると考えれば宜しいのですね?
 Excelには、関数の中に関数を入れ子にして使う事が出来る限界があり、Excelのバージョンが、Excel2007よりも前のバージョンである場合には、7重の関数までにしか出来ませんので、もし、質問者様が御使用されているExcelのバージョンが、Excel2007よりも前のバージョンである場合には、一旦、別のセル(例えばA4セル)に期限日を表示させてから、A4セルに表示されている日付の翌日の、更に1ヶ月前の日以降になると、アラートを表示させる様にした方が良いと思います。

 まず、A4セルに次の関数を入力して下さい。

=IF(AND(ISNUMBER(A$1),OR(ISNUMBER(FIND("年",A$2)),ISNUMBER(FIND("月",A$2)),ISNUMBER(FIND("日",A$2)))),DATE(YEAR(A$1)-IF(ISNUMBER(FIND("年",A$2)),LEFT(A$2,FIND("年",A$2)-1)+0,0),MONTH(A$1)-IF(ISNUMBER(FIND("月",A$2)),SUBSTITUTE(MID("年"&A$2,FIND("月",A$2)-2+ISNUMBER(MID(A$2,FIND("月",A$2)-1,1)+0),2),"年",)+0,0),DAY(A$1)-IF(ISNUMBER(FIND("日",A$2)),MID(A$2,IF(ISNUMBER(FIND("月",A$2)),FIND("月",A$2),IF(ISNUMBER(FIND("年",A$2)),FIND("年",A$2),0))+1,LEN(A$2)-IF(ISNUMBER(FIND("月",A$2)),FIND("月",A$2),IF(ISNUMBER(FIND("年",A$2)),FIND("年",A$2),0))-1)+0,0)))

 次に、A3セルには、次の関数を入力して下さい。

=IF(ISNUMBER(A$4),IF(TODAY()<DATE(YEAR(A$4+1),MONTH(A$4+1)-1,DAY(A$4+1)),"","○"),"")

 後は、A1セルに日付、A2セルに期限を入力しますと、A4セルに期限日が表示され、期限日の1ヶ月前の日を過ぎると(期限日の丁度1ヶ月前の日は含まず)、A3セルに「○」が表示されます。
 尚、上記の関数では、A2セルに入力する期限が、「1ヶ月」や「2ヶ月」だけではなく、「1年」や「4月」、「5か月」、「11ヵ月」、「03カ月」、「2年12箇月」、「1年3月10日」、「1230日」等々にも対応しています。(但し、「2/10/20」の様に、「年」、「月」、「日」の何れの文字も含まれていない場合には対応していません)

 それから、もし、質問者様が御使用されているExcelのバージョンが、Excel2007以降のバージョンである場合には、関数を入れ子に出来る限界が、64重にもなりますから、A3セルの関数と、A4セルの関数を一纏めにして、A4セルは使用せずに、A3セルだけでアラートを表示させる事も可能です。
 その場合のA3セルの関数は、次の様なものとなります。

=IF(AND(ISNUMBER(A$1),OR(ISNUMBER(FIND("年",A$2)),ISNUMBER(FIND("月",A$2)),ISNUMBER(FIND("日",A$2)))),IF(TODAY()<DATE(YEAR(DATE(YEAR(A$1)-IF(ISNUMBER(FIND("年",A$2)),LEFT(A$2,FIND("年",A$2)-1)+0,0),MONTH(A$1)-IF(ISNUMBER(FIND("月",A$2)),SUBSTITUTE(MID("年"&A$2,FIND("月",A$2)-2+ISNUMBER(MID(A$2,FIND("月",A$2)-1,1)+0),2),"年",)+0,0),DAY(A$1)-IF(ISNUMBER(FIND("日",A$2)),MID(A$2,IF(ISNUMBER(FIND("月",A$2)),FIND("月",A$2),IF(ISNUMBER(FIND("年",A$2)),FIND("年",A$2),0))+1,LEN(A$2)-IF(ISNUMBER(FIND("月",A$2)),FIND("月",A$2),IF(ISNUMBER(FIND("年",A$2)),FIND("年",A$2),0))-1)+0,0))+1),MONTH(DATE(YEAR(A$1)-IF(ISNUMBER(FIND("年",A$2)),LEFT(A$2,FIND("年",A$2)-1)+0,0),MONTH(A$1)-IF(ISNUMBER(FIND("月",A$2)),SUBSTITUTE(MID("年"&A$2,FIND("月",A$2)-2+ISNUMBER(MID(A$2,FIND("月",A$2)-1,1)+0),2),"年",)+0,0),DAY(A$1)-IF(ISNUMBER(FIND("日",A$2)),MID(A$2,IF(ISNUMBER(FIND("月",A$2)),FIND("月",A$2),IF(ISNUMBER(FIND("年",A$2)),FIND("年",A$2),0))+1,LEN(A$2)-IF(ISNUMBER(FIND("月",A$2)),FIND("月",A$2),IF(ISNUMBER(FIND("年",A$2)),FIND("年",A$2),0))-1)+0,0))+1)-1,DAY(DATE(YEAR(A$1)-IF(ISNUMBER(FIND("年",A$2)),LEFT(A$2,FIND("年",A$2)-1)+0,0),MONTH(A$1)-IF(ISNUMBER(FIND("月",A$2)),SUBSTITUTE(MID("年"&A$2,FIND("月",A$2)-2+ISNUMBER(MID(A$2,FIND("月",A$2)-1,1)+0),2),"年",)+0,0),DAY(A$1)-IF(ISNUMBER(FIND("日",A$2)),MID(A$2,IF(ISNUMBER(FIND("月",A$2)),FIND("月",A$2),IF(ISNUMBER(FIND("年",A$2)),FIND("年",A$2),0))+1,LEN(A$2)-IF(ISNUMBER(FIND("月",A$2)),FIND("月",A$2),IF(ISNUMBER(FIND("年",A$2)),FIND("年",A$2),0))-1)+0,0))+1)),"","○"),"")
    • good
    • 0
この回答へのお礼

すごいっ!確かにできました!ありがとうございました。

お礼日時:2011/07/20 21:19

No.4です!


たびたびごめんなさい。

投稿した後で数式の間違いに気づきました。
せっかくA2セルに数値を入力するようにしているのに、それを利用していませんでした。

=IF(COUNTBLANK(A1:A2),"",IF(TODAY()>=EDATE(A1,-A2),"!",""))

に訂正してみてください。

何度も失礼しました。m(_ _)m
    • good
    • 0
この回答へのお礼

とんでもないです。こちらも非常に参考になりました。ありがとうございます!

お礼日時:2011/07/20 21:20

こんばんは!


横からお邪魔します。

こういうコトですかね?
A2セルには月数(単に数値のみ)を入力します。

A3セルを
=IF(COUNTBLANK(A1:A2),"",IF(TODAY()>=EDATE(A1,-1),"!",""))

としてみてはどうでしょうか?

尚、EDATE関数を使用するにあたって当方使用のExcel2003以前のバージョンでは
メニュー → ツール → アドイン → 「分析ツール」にチェックを入れておく必要があります。

的外れならごめんなさいね。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます!参考になりました。

お礼日時:2011/07/20 21:21

ご質問の意味がよくわかりませんがA3セルには次の式を入力してはどうでしょう。



=IF(A2="","",IF(TODAY()>=DATE(YEAR(A2),MONTH(A2)-1,DAY(A2)),"○",""))
    • good
    • 0

エクセルには Today()関数というのがあります。


仮に A4セルに =today() と入れてみてください。
今日の日付が出ます。明日、ファイルと開くと明日の日付です。
1月前の日付ですが A5セルに =DATE(YEAR(A1),MONTH(A1)-A2,DAY(A1))
となります。
アラートのセルですが
=IF(A4>A5,"○","")
となります。この式を一つにまとめると
=IF(TODAY()>DATE(YEAR(A1),MONTH(A1)-A2,DAY(A1)),"○","")
A1,A2セルが未入力の場合を考慮すると
=IF(OR(A1="",A2=""),"",IF(TODAY()>DATE(YEAR(A1),MONTH(A1)-A2,DAY(A1)),"○",""))
とかになります。
式の組み立てを理解して自分ものにしてください。
    • good
    • 0
この回答へのお礼

わかりやすい解説、ありがとうございます。教わるだけではだめですね、勉強いたします!

お礼日時:2011/07/20 21:22

 A3セルに次の関数を入力されると良いと思います。



=IF(ISNUMBER(A2),IF(A1>DATE(YEAR(A2),MONTH(A2)+1,DAY(A2)),"","○"),"")

この回答への補足

早速ご回答頂きありがとうございます!
そして、ごめんなさい。こちらの質問が、わかり難かったみたいです。

(A1)2011年7月30日、(A2)1ヶ月、と入れておけば、2011年6月1日以降は(A3)上で自動でアラートがずっと表示される、という感じにできたらと思ってます。(A2)は、具体的な日付でもかまいません。

kagakusukiさんからご教示頂いた方法を試したところ、(A1)に2011年10月30日、(A2)に1ヶ月前の日付である2011年10月1日、と入れたら、本日(2011/7/19)の時点でアラートが出てしまいました。この場合は、2011年9月1日にアラートが表示されるようにしたいです・・。

操作が間違っていればご指摘頂ければと存じます。
わがままを言ってすみません、よろしくお願いいたします。

補足日時:2011/07/19 18:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!