質問: セル色を、ある条件で自動的に色分けして塗りつぶしさせたい こんにちは。いつもお世話になっております。 まさに標題の通りなのですが、有る位置のセル内に入れた数字によって設定済みの色でセルを 塗りつぶしたい場合、どのようにすれば宜しいでしょうか。 因みに現在は下記の通りに設定しております。 ●現在の設定● 書式(d)→条件付き書式(d) にて 条件1(1) 数式が =$g2=1 であればセル色を黄緑 条件2(2) 数式が =$g2=2 であればセル色をピンク 条件3(3) 数式が =$g2=3 であればセル色を水色 ◆この度、設定変更しなくてはならない背景◆ 来月からセルg2に入れる数字が現状では1,2,3のみですが1,2,3,4,5と変更になる為。 (書式付き設定ではmax3つまでしか設定できないように見受けられるので) 尚、当方はさほどエクセルに精通しておりませんのでマクロやvbaなど組んだ事が無く、かつ、 以前ちょっと挑戦しようと思ったのですが全く理解できなかった為、例えば関数などを用いて 設定出来る方法がありましたら例文を記載して戴けますと非常に助かります。 また、エクセルのヘルプで検索した結果 「vbaを使用してセルの塗りつぶしの色を変更する」というものを見つけたので閲覧↓ http://office.microsoft.com/ja-jp/excel/ha011366271041.aspx?pid=cl100570551041 したのですが、式らしきものを見つけたものの、その意味が理解できず、どのように記述して よいのか判りませんでした。。。 以上、お手隙の方、いらっしゃいましたら何卒ご教授の程、お願い致します。
回答: >例えば関数などを用いて設定出来る方法がありましたら ありません。質問文にあるように条件付き書式は3条件までです。元の背景色を加えて4色まで塗り分けが可能ですが、5色以上はどうしてもマクロが必要です。マクロに手を出すつもりがないなら、残念ながらあきらめるしかありません。 セルの値によって色を変えるのはg2セルだけでよいならマクロは以下のようになります。マクロは値を入力するシートの「シート名タブ右クリック」→「コードの表示」で開く画面に貼り付けてください。 そしてシート画面に戻ってg2セルに値を入力してみてください。 もしg2以外も背景色を変えたいならマクロの3行目を修正してください private sub worksheet_change(byval target as range) dim rng as range const trg as string = "g2" ' "a1:a3"のように複数セルでもよい set rng = intersect(target, range(trg)) if not rng is nothing then select case rng.value case is = 1 'もし入力されたのが1ならば rng.interior.colorindex = 4 '背景色を黄緑にする case is = 2 'もし入力されたのが2ならば rng.interior.colorindex = 7 '背景色をピンクにする case is = 3 'もし入力されたのが3ならば rng.interior.colorindex = 8 '背景色を水色にする case is = 4 'もし入力されたのが4ならば rng.interior.colorindex = 6 '背景色を黄色にする case is = 5 'もし入力されたのが5ならば rng.interior.colorindex = 3 '背景色を赤にする case else 'その他の値なら色を消す rng.interior.colorindex = xlnone end select end if end sub 色番号(colorindex)は下記urlを参照して、好きな色に変更してください http://furyu.tea-nifty.com/annex/2006/05/excel_cab9.html