- ベストアンサー
エクセルVBAで条件にあうセルを塗りつぶす方法
- エクセルVBAを使用して、指定した条件に合致したセルを塗りつぶす方法を教えてください。
- 複数の列において、基準値との増減によってセルの色を変更したい場合、条件に応じて黄色、赤、青の塗りつぶしを行います。
- これを実現するためには、各セルの基準値と比較し、増減が特定の範囲内にある場合に対応する色でセルを塗りつぶします。
- みんなの回答 (13)
- 専門家の回答
質問者が選んだベストアンサー
すみません つまらないミスに気づきました 誤)For Each C In Range(Cells(2,1), Cells( Endclo , Endrow)) 正)For Each C In Range(Cells(2,1), Cells( Endrow , Endcol)) これよく間違えてしまいます Cells表記は左が行、右が列です
その他の回答 (12)
- hoiho11
- ベストアンサー率15% (8/53)
こんな感じ? これを基本に同じようにC、D列もやってみればよろしい Sub 色塗り() Dim c As Range Dim i As Long Dim atai As Integer Dim Endrow As Long Endrow = Range("a2").End(xlDown).Row For Each c In Range("a2:a" & Endrow) atai = c.Offset(0, 1).Value - Range("b1").Value Select Case atai Case Is <= 0 c.Offset(0, 1).Interior.ColorIndex = 6 Case 5 To 8 c.Offset(0, 1).Interior.ColorIndex = 3 Case Is >= 9 c.Offset(0, 1).Interior.ColorIndex = 5 End Select Next End Sub
補足
この方法だと、エクセルの最終行65???まで黄色に塗りつぶされてしまいます。 また、1列毎しか処理ができないのでしょうか? 指定エリアを1つの関数で処理することはできないのでしょうか?
- amondyuru
- ベストアンサー率17% (80/465)
エクセルのヘルプから、条件付き書式を検索してください。 やり方も簡単ですがちゃんと説明してあります。
補足
質問にも記入しておりますが、条件を4つ以上つけるので、条件付き書式がつかえません。
- 1
- 2
お礼
今日は外出していたので、お礼が遅くなって申し訳ございません。 昨日から大変お世話になり、本当にありがとうございました。 教えて頂いたコードで無事実行することができました。 今回VBAを教えて頂き、VBAを勉強してみようと思いました。 そして、早速VBAの本を買いました。 VBAの本を片手に自分なりにコードを一部変えてみました。 Private Sub SetColor1() Dim i As Long Dim Col As Integer Dim atai As Integer Dim area As String Dim keyCells As String Dim Endrow As Long '基準値の行を指定 Col = 2 '基準値の下のセルを指定 area = "b3" Endrow = Range(area).End(xlDown).Row '塗りつぶし対象となる起点「d3」と塗りつぶし対象末の列「i」を指定 For Each c In Range("d3:i" & Endrow) atai = c.Value - Cells(Col, c.Column) If c.Value <> "" Then Select Case atai Case Is <= -1 c.Interior.ColorIndex = 6 Case 5 To 8 c.Interior.ColorIndex = 3 Case Is >= 9 c.Interior.ColorIndex = 5 End Select End If Next End Sub