- ベストアンサー
セル色を、ある条件で自動的に色分けして塗りつぶしさせたい
こんにちは。いつもお世話になっております。 まさに標題の通りなのですが、有る位置のセル内に入れた数字によって設定済みの色でセルを 塗りつぶしたい場合、どのようにすれば宜しいでしょうか。 因みに現在は下記の通りに設定しております。 ●現在の設定● 書式(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)
- 専門家の回答
質問者が選んだベストアンサー
#02です。補足を見て変更しました。 色番号はご自由に直してください Private Sub Worksheet_Change(ByVal Target As Range) Dim r, rng As Range Const trg As String = "G2:G50" ' "A1:A3"のように複数セルでもよい Set rng = Intersect(Target, Range(trg)) If Not rng Is Nothing Then For Each r In rng Select Case r.Value Case Is = 1 'もし入力されたのが1ならば Cells(r.Row, 1).Resize(1, 8).Interior.ColorIndex = 4 '背景色を黄緑 Case Is = 2 'もし入力されたのが2ならば Cells(r.Row, 1).Resize(1, 8).Interior.ColorIndex = 7 '背景色をピンク Case Is = 3 'もし入力されたのが3ならば Cells(r.Row, 1).Resize(1, 8).Interior.ColorIndex = 8 '背景色を水色 Case Is = 4 'もし入力されたのが4ならば Cells(r.Row, 1).Resize(1, 8).Interior.ColorIndex = 6 '背景色を黄色 Case Is = 5 'もし入力されたのが5ならば Cells(r.Row, 1).Resize(1, 8).Interior.ColorIndex = 3 '背景色を赤 Case Else 'その他の値なら色を消す Cells(r.Row, 1).Resize(1, 8).Interior.ColorIndex = xlNone End Select Next r End If End Sub
その他の回答 (2)
- zap35
- ベストアンサー率44% (1383/3079)
>例えば関数などを用いて設定出来る方法がありましたら ありません。質問文にあるように条件付き書式は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
補足
こんにちは。早々にご回答、有難うございました。 まずはお教え戴きましたものをコピペしましたら上手く行きました。有難うございました!!(感動♪) しかし…。説明を割愛しておりました為に、これではまだ不十分な完成でございます。 もしもお手隙なお時間がおありでしたら、下記の点を加味したマクロをご教授戴けましたら助かります。 ●G2~G50までに値を入れると、その行のセル色を自動的に変えるようにしたい。例えば…↓ G2に1を入力したらA2~K2全部のセルを黄緑にしたい。 G2に2を入力したらA2~K2全部のセルを水色にしたい。 G2に3を入力したらA2~K2全部のセルを薄紫にしたい。 G2に4を入力したらA2~K2全部のセルをピンクにしたい。 G2に5を入力したらA2~K2全部のセルをスカイブルーにしたい。 G3に1を入力したらA3~K3全部のセルを黄緑にしたい。 G3に2を入力したらA3~K3全部のセルを水色にしたい。 G3に3を入力したらA3~K3全部のセルを薄紫にしたい。 G3に4を入力したらA3~K3全部のセルをピンクにしたい。 G3に5を入力したらA3~K3全部のセルをスカイブルーにしたい。 : : : G50に1を入力したらA50~K50全部のセルを黄緑にしたい。 G50に2を入力したらA50~K50全部のセルを水色にしたい。 G50に3を入力したらA50~K50全部のセルを薄紫にしたい。 G50に4を入力したらA50~K50全部のセルをピンクにしたい。 G50に5を入力したらA50~K50全部のセルをスカイブルーにしたい。 以上となります。ご無理なさらず、もしもお時間がありましたらで構いません。宣しくお願い致します。
- pbforce
- ベストアンサー率22% (379/1719)
> ◆この度、設定変更しなくてはならない背景◆ をもっと詳しく教えて下さい。それによって条件の式で解決できるか出来ないかが決まります。 条件付書式は3つのパターンしか登録できませんので、5色に分けたいのでしたらVBAになると思います。 5つのパターンでも3色に塗り分けるのなら、条件付書式の式の書き方で対応できる可能性はあります。
補足
こんにちは。早々のご回答、有難うございます。 >もっと詳しく教えて下さい。 ◆現時点では管理している人間が3名なので3色のセルで対応可能なのですが、来年から管理すべき 対象の人間が2名増えることから5色が必要になってきてしまったのです。 (現在:Aさん=1番 Bさん=2番 Cさん=3番 としており、セル位置G2に、この1,2,3 を入れることによって、誰のデータであるか一目見ればパッと判るようにしているのです) 従いまして5名いたら5色の設定が必要、というわけなのです。 ただ、どうしてもマクロでないと対応不可能であるならば、Bさんと今回新規に管理対象となる Dさん(4番)とEさん(5番)のセル色を同一色(現在、Bさんデータのセル色はピンクなので これを引継ぎ、ピンクとしても構わないかな…とは思っておりますが…。 どうしてもこれにせざるを得ない場合(私の技量がないばかりに…)の記述の仕方は 書式(D)→ 条件付き書式(D) 内で、どのように記載すれば宜しいのでしょうか。 再度のご質問になってしまい誠に恐縮ですが、もしもお手隙なお時間がありました際には、どうぞ ご教授願います。
お礼
こんにちは。ご多忙中の所、早々にご回答戴きまして有難うございました! Resize(1, 8)の 8 が色を付けたいセル数を示しているのですね♪ 現時点ではA~Kまでですので Resize(1, 11) ですが、今後、表示すべき項目数が増える可能性が高く、 そうなるとおのずとセル色をつけるセル数も増えますので、これは本当に便利で、かつ助かりました! まだまだ判らないプログラム?ですが、パッと見、ここはこんな事を指示してるんだろうなぁ…という 憶測がつく部分もありますので、以後、何かの時にはこちらをサンプルとして勉強がてら自分で作って みようと思いました。 この年の瀬のお忙しい中、本当にほんと~に、どうも有難うございました!!