• ベストアンサー

エクセルのアラート設定

エクセルで、(A1)に日付を入れ、(A2)に期限を入れ、(A3)に(A2)の期限のさらに1ヶ月前にアラートを表示する、というような設定は可能でしょうか。 具体的なイメージとしては、(A1)2011年7月30日、(A2)1ヶ月、とすると、(A3)では2011年6月1日になるとアラートが表示される(表示は、「○」とか「!」で構いません。)、という感じにできたらと思ってます。 ご教示頂けると幸いです。よろしくお願いいたします。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.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)),"","○"),"")

poprockj
質問者

お礼

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

その他の回答 (5)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.4です! たびたびごめんなさい。 投稿した後で数式の間違いに気づきました。 せっかくA2セルに数値を入力するようにしているのに、それを利用していませんでした。 =IF(COUNTBLANK(A1:A2),"",IF(TODAY()>=EDATE(A1,-A2),"!","")) に訂正してみてください。 何度も失礼しました。m(_ _)m

poprockj
質問者

お礼

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

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! 横からお邪魔します。 こういうコトですかね? A2セルには月数(単に数値のみ)を入力します。 A3セルを =IF(COUNTBLANK(A1:A2),"",IF(TODAY()>=EDATE(A1,-1),"!","")) としてみてはどうでしょうか? 尚、EDATE関数を使用するにあたって当方使用のExcel2003以前のバージョンでは メニュー → ツール → アドイン → 「分析ツール」にチェックを入れておく必要があります。 的外れならごめんなさいね。m(_ _)m

poprockj
質問者

お礼

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

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

ご質問の意味がよくわかりませんがA3セルには次の式を入力してはどうでしょう。 =IF(A2="","",IF(TODAY()>=DATE(YEAR(A2),MONTH(A2)-1,DAY(A2)),"○",""))

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

エクセルには 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)),"○","")) とかになります。 式の組み立てを理解して自分ものにしてください。

poprockj
質問者

お礼

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

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 A3セルに次の関数を入力されると良いと思います。 =IF(ISNUMBER(A2),IF(A1>DATE(YEAR(A2),MONTH(A2)+1,DAY(A2)),"","○"),"")

poprockj
質問者

補足

早速ご回答頂きありがとうございます! そして、ごめんなさい。こちらの質問が、わかり難かったみたいです。 (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日にアラートが表示されるようにしたいです・・。 操作が間違っていればご指摘頂ければと存じます。 わがままを言ってすみません、よろしくお願いいたします。

関連するQ&A