- 締切済み
エクセル マクロ 今月中/三カ月以内 セルの色変更
エクセルでI列に日付が並んでいます。 その日付が今月中であれば緑、三カ月以内であればピンクにしないのですが、 どなたかコードの書き方を教えてください。 どうぞよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答No.3、4です。 >以下の、4パターンが知りたいです。 >今月中:今日が4/25であれば4/30 >それに加えて、今日から1ヶ月後;5/25 >3ヶ月以内:今日が4/25であれば、3ヶ月後な末日7/31 >それに加えて、今日から3ヶ月後;7/25 「今月中:今日が4/25であれば4/30」や「今日が4/25であれば、3ヶ月後な末日7/31」というだけでは期間の初日をいつにするのか不明ですが、期間の初日は今日であると考えても宜しいのでしょうか? もしそうであるのなら、「3ヶ月以内:今日が4/25であれば、3ヶ月後な末日7/31」に関しては回答No.4の >同じく「今日(2015/4/24)~3ヶ月後の末日(2015/7/31)」の期間内の日付のものをピンク色に塗りつぶす場合には、「次の数式を満たす場合に値を書式設定」欄の中に入力する数式を次の様なものとします。 の所で既に述べさせて頂きました。 又、「今日から3ヶ月後;7/25」に関しても回答No.4の >同じく「今日(2015/4/24)~3ヶ月後の同日(2015/7/24)」の期間内の日付のものをピンク色に塗りつぶす場合には、「次の数式を満たす場合に値を書式設定」欄の中に入力する数式を次の様なものとします。 の所で既に述べさせて頂きました。 只、「同日」という表現が紛らわしいきらいがありましたので、「今日から3ヶ月後の日付」とした方が良かったかも知れません。 但し、 >同じく「今日(2015/4/24)~3ヶ月後の末日(2015/7/31)」の期間内の日付のものをピンク色に塗りつぶす場合には、「次の数式を満たす場合に値を書式設定」欄の中に入力する数式を次の様なものとします。 の方に関しましては、今日が2015/4/24とした場合、2015/4/24の0:00:00~2015/7/31の0:00:00の日時の範囲という条件となりますので、もしもI列に入力されている値が3ヶ月後の末日の内、真夜中の0時丁度以外の時刻かが付いたデータ、即ち、2015/7/31の0:00:01~2015/7/31の23:59:59の範囲の時刻付きのデータが入力されていてもセルの塗りつぶしが行われません。 それでI列に時刻付きの日時のデータが入力されている場合にも対応する様に考慮致しますと、次の様になります。 ●今日~今月末日(今日が2015/4/25であるとした場合、2015/4/25 0:00:00~2015/4/30 23:59:59)の範囲内の日時が入力されているセルのみを緑色に塗りつぶす場合 回答No.3の条件付き書式の設定方法の中の次の数式 =AND(LEFT(CELL("format",I1),1)="D",TEXT(I1,"yyyy/m")=TEXT(TODAY(),"yyyy/m")) を以下の数式のいずれかと差し替える。 =AND(LEFT(CELL("format",I1),1)="D",I1<DATE(YEAR(TODAY()),MONTH(TODAY())+1,1),I1>=TODAY()) 或いは =AND(LEFT(CELL("format",I1),1)="D",TEXT(I1,"yyyy/m")=TEXT(TODAY(),"yyyy/m"),I1>=TODAY()) 或いは =AND(LEFT(CELL("format",I1),1)="D",I1<EOMONTH(TODAY(),0)+1,I1>=TODAY()) ●今日~今日の1ヶ月後の日(今日が2015/4/25であるとした場合、2015/4/25 0:00:00~2015/5/25 23:59:59)の範囲内の日時が入力されているセルのみを緑色に塗りつぶす場合 回答No.3の条件付き書式の設定方法の中の次の数式 =AND(LEFT(CELL("format",I1),1)="D",TEXT(I1,"yyyy/m")=TEXT(TODAY(),"yyyy/m")) を以下の数式のどちらかと差し替える。 =AND(LEFT(CELL("format",I1),1)="D",TODAY()>=DATE(YEAR(I1),MONTH(I1)-1,DAY(I1)),I1>=TODAY()) 或いは =AND(LEFT(CELL("format",I1),1)="D",I1<EDATE(TODAY(),1)+1,I1>=TODAY()) ●今日~3月後の月の末日(今日が2015/4/25であるとした場合、2015/4/25 0:00:00~2015/7/31 23:59:59)の範囲内の日時が入力されているセルのみをピンク色に塗りつぶす場合 回答No.3の条件付き書式の設定方法の中の次の数式 =AND(LEFT(CELL("format",I1),1)="D",TODAY()>=DATE(YEAR(I1),MONTH(I1)-3,DAY(I1)),TODAY()<=DATE(YEAR(I1),MONTH(I1)+3,DAY(I1))) を以下の数式のどちらかと差し替える。 =AND(LEFT(CELL("format",I1),1)="D",I1<DATE(YEAR(TODAY()),MONTH(TODAY())+4,1),I1>=TODAY()) 或いは =AND(LEFT(CELL("format",I1),1)="D",I1<EOMONTH(TODAY(),3)+1,I1>=TODAY()) ●今日~今日の3ヶ月後の日(今日が2015/4/25であるとした場合、2015/4/25 0:00:00~2015/7/25 23:59:59)の範囲内の日時が入力されているセルのみをピンク色に塗りつぶす場合 回答No.3の条件付き書式の設定方法の中の次の数式 =AND(LEFT(CELL("format",I1),1)="D",TODAY()>=DATE(YEAR(I1),MONTH(I1)-3,DAY(I1)),TODAY()<=DATE(YEAR(I1),MONTH(I1)+3,DAY(I1))) を以下の数式のどちらかと差し替える。 =AND(LEFT(CELL("format",I1),1)="D",TODAY()>=DATE(YEAR(I1),MONTH(I1)-3,DAY(I1)),I1>=TODAY()) 或いは =AND(LEFT(CELL("format",I1),1)="D",I1<EDATE(TODAY(),3)+1,I1>=TODAY())
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答No.3です。 因みに条件付き書式を利用して、「3ヶ月前の同日(2015/1/24)~今日(2015/4/24)」の期間内の日付のものをピンク色に塗りつぶす場合には、「次の数式を満たす場合に値を書式設定」欄の中に入力する数式を次の様なものとします。 =AND(LEFT(CELL("format",$I1),1)="D",TODAY()<=DATE(YEAR($I1),MONTH($I1)+3,DAY($I1)),TODAY()>=$I1) 同じく「今日(2015/4/24)~3ヶ月後の同日(2015/7/24)」の期間内の日付のものをピンク色に塗りつぶす場合には、「次の数式を満たす場合に値を書式設定」欄の中に入力する数式を次の様なものとします。 =AND(LEFT(CELL("format",$I1),1)="D",TODAY()>=DATE(YEAR($I1),MONTH($I1)-3,DAY($I1)),TODAY()<=$I1) 同じく「3ヶ月前の1日(2015/1/1)~3ヶ月後の末日(2015/7/31)」の期間内の日付のものをピンク色に塗りつぶす場合には、「次の数式を満たす場合に値を書式設定」欄の中に入力する数式を次の様なものとします。 =AND(LEFT(CELL("format",$I1),1)="D",$I1>=DATE(YEAR(TODAY()),MONTH(TODAY())-3,1),$I1<=DATE(YEAR(TODAY()),MONTH(TODAY())+4,0)) 同じく「3ヶ月前の1日(2015/1/1)~今日(2015/4/24)」の期間内の日付のものをピンク色に塗りつぶす場合には、「次の数式を満たす場合に値を書式設定」欄の中に入力する数式を次の様なものとします。 =AND(LEFT(CELL("format",$I1),1)="D",$I1>=DATE(YEAR(TODAY()),MONTH(TODAY())-3,1),TODAY()>=$I1) 同じく「今日(2015/4/24)~3ヶ月後の末日(2015/7/31)」の期間内の日付のものをピンク色に塗りつぶす場合には、「次の数式を満たす場合に値を書式設定」欄の中に入力する数式を次の様なものとします。 =AND(LEFT(CELL("format",$I1),1)="D",$I1<=DATE(YEAR(TODAY()),MONTH(TODAY())+4,0),TODAY()<=$I1)
- kagakusuki
- ベストアンサー率51% (2610/5101)
他の方も仰っておられますが、 >三カ月以内 とはどの様な意味として考えておられるのでしょうか? 例えば今日の日付が2015/4/24だった場合において、「3ヶ月前の同日(2015/1/24)~3ヶ月後の同日(2015/7/24)」の事なのでしょうか? 或いは「3ヶ月前の同日(2015/1/24)~今日(2015/4/24)」、「今日(2015/4/24)~3ヶ月後の同日(2015/7/24)」、「3ヶ月前の1日(2015/1/1)~3ヶ月後の末日(2015/7/31)」、「3ヶ月前の1日(2015/1/1)~今日(2015/4/24)」、「今日(2015/4/24)~3ヶ月後の末日(2015/7/31)」の何れかなのでしょうか? 質問者様がどの意味で >三カ月以内 と仰っておられるのか判りませんので、取り敢えずの話として、セルに入力されている日付が「3ヶ月前の同日(2015/1/24)~3ヶ月後の同日(2015/7/24)」の場合においてピンクにする様な条件付き書式と、今月中の場合において緑にする様な条件付き書式を設定する方法をまずお伝えする事に致します。 尚、以下の操作方法はExcelのバージョンがExcel2007以降の場合のものです。 ですから、もし質問者様が御使いになられているExcelのバージョンがExcel2007よりも前のものであった場合には、それに合わせた設定方法を御伝え致しますので、その旨を御教え願います。 I1セルを選択 ↓ Excelウィンドウの[ホーム]タブをクリック ↓ 現れた「スタイル」グループの中にある[条件付き書式]ボタンをクリック ↓ 現れた選択肢の中にある[ルールの管理]をクリック ↓ 現れた「条件付き書式ルールの管理」ダイアログボックスの中にある[新規ルール]ボタンをクリック ↓ 現れた「新しい書式ルール」ダイアログボックスの「ルールの種類を選択して下さい」欄の中にある[数式を使用して、書式設定するセルを決定]をクリック ↓ 現れた「次の数式を満たす場合に値を書式設定」欄の中に =AND(LEFT(CELL("format",I1),1)="D",TODAY()>=DATE(YEAR(I1),MONTH(I1)-3,DAY(I1)),TODAY()<=DATE(YEAR(I1),MONTH(I1)+3,DAY(I1))) と入力 ↓ 「新しい書式ルール」ダイアログボックスの[書式]ボタンをクリック ↓ 現れた「セルの書式設定」ダイアログボックスの[塗りつぶし]タブをクリック ↓ 現れた背景色のサンプルの中にあるピンク色の四角形をクリック ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック ↓ 「新しい書式ルール」ダイアログボックスの[OK]ボタンをクリック ↓ 「条件付き書式ルールの管理」ダイアログボックスの[新規ルール]ボタンをクリック ↓ 現れた「新しい書式ルール」ダイアログボックスの「ルールの種類を選択して下さい」欄の中にある[数式を使用して、書式設定するセルを決定]をクリック ↓ 現れた「次の数式を満たす場合に値を書式設定」欄の中に =AND(LEFT(CELL("format",I1),1)="D",TEXT(I1,"yyyy/m")=TEXT(TODAY(),"yyyy/m")) と入力 ↓ 「新しい書式ルール」ダイアログボックスの[書式]ボタンをクリック ↓ 現れた「セルの書式設定」ダイアログボックスの[塗りつぶし]タブをクリック ↓ 現れた背景色のサンプルの中にある緑色の四角形をクリック ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック ↓ 「新しい書式ルール」ダイアログボックスの[OK]ボタンをクリック ↓ 「条件付き書式ルールの管理」ダイアログボックスの「適用先」欄を2箇所とも $I:$I に変更(カーソルとマウスの左ボタンによる範囲選択が使えます) ↓ 「条件付き書式ルールの管理」ダイアログボックスにおいて、塗りつぶしの色が 緑色のものが上、 ピンク色のものが下、 となっている事を確認。 ↓ 「条件付き書式ルールの管理」ダイアログボックスの[適用]ボタンをクリック ↓ 「条件付き書式ルールの管理」ダイアログボックスの[OK]ボタンをクリック 以上です。
- Nouble
- ベストアンサー率18% (330/1783)
横合いから 失礼します エクセルとして お話しします 今月とは どう判断したら いいか 3ヶ月以内とは どう判断したら いいか ですが 先月末より先が 今月です エクセルでは 日付は 内部的に数値として 保持しています 加えて 一日毎に1 増やしています ですので 時刻を除いて 先月末より大きければ 今月です 同様に 三ヶ月前月末 以降が 今月を含めた 期間3ヶ月 です 余談ですが 今日の日付は =today() 今日は何月か =month(today()) 今日は西暦で何年か =year(today()) 任意の日付の値を得る 例えば 2015年1月27日 =date(year(2015),month(1),day(27)) 任意の日に対する 先月末日を求める 例えば 2015年2月27日 =date(year(2015),month(2),0) 条件付き書式の設定 http://www.becoolusers.com/excel/conditional-formatting-fx.html 組み合わせて ください ね
- DJ-Potato
- ベストアンサー率36% (692/1917)
マクロでその操作をすると、ファイルを開くたびにマクロw実行しないといけなくなりませんか? 条件付き書式の方がいいのではないでしょうか。
補足
アクセスからエクスポートしたエクセファイルに対して行いたいのですが、条件付き書式で出来ますでしょうか?本当なら、アクセスのマクロでやりたいのですが、方法ご存知でしょうか? 条件付き書式の場合今月中とどのように設定しますでしょうか?どうぞよろしくお願いします。
補足
大変失礼しました。表現が曖昧ですみませんでした。 以下の、4パターンが知りたいです。 今月中:今日が4/25であれば4/30 それに加えて、今日から1ヶ月後;5/25 3ヶ月以内:今日が4/25であれば、3ヶ月後な末日7/31 それに加えて、今日から3ヶ月後;7/25 アクセスからエクスポートしたファイルに対して、これを行いたいので、やはりマクロを用意した方がよいとおもうのですが、どうでしょうか?条件付き書式だと、エクスポートしたファイルにたいして、毎回設定が必要になりますでしょうか? どうぞよろしくお願いします。