- ベストアンサー
Excel VBAでの値の比較方法とセルの色変更
- Excel VBAを使用して、セルの値を比較する方法について教えてください。特定のセル同士を比較し、値が異なる場合にはA列またはB列のセルの色を変更したいです。
- 具体的な例として、セルA1とセルG1、セルA2とセルG2、セルB1とセルH1、セルB2とセルH2の値を比較し、異なる場合にはA列またはB列のセルの色を変更したいです。
- この要件を満たすためには、Excel VBAを使用して各セルの値を取得し、比較して異なる場合には色を変更するコードを実装する必要があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 > シート別の場合はどのようなVBAになりますでしょうか? ほとんど比較対象を変えるだけだと思います。 for each xx in zzz ~ next のループ文で xx に zzz の各要素が順次代入されます。 zzz は Range("A1:B2") を指定していますから、 xx は Range("A1") → Range("B1") → Range("A2") → Range("B2") のように処理されます。 前回はこれの Offsetしたセルと比較してますが、今回はこれを 別シートのアドレスが同じセルと比較すれば良い訳です。 下記は1番左のシートと左から2番目のシートを比較します。 Sub test2() Dim r As Range For Each r In Worksheets(1).Range("A1:B2") If r.Value <> Worksheets(2).Range(r.Address) Then r.Interior.ColorIndex = 20 Else r.Interior.ColorIndex = xlNone End If Next End Sub
その他の回答 (2)
- ham_kamo
- ベストアンサー率55% (659/1197)
No.1の方もかかれているように、VBAを使わずとも条件付き書式でできるので、一応その設定方法を書いておきます。 A列全体を選択して「書式」>「条件付き書式」で 「セルの値が」「次の値に等しい」「=$G1」とし、「書式」ボタンを押して、「パターン」タブを選択し、背景色を指定してOK。 B列の場合も上記と同じ手順で =$H1と比較するように設定。
- papayuka
- ベストアンサー率45% (1388/3066)
条件付書式で簡単に実現出来る事をわざわざVBAでやる必要性を感じませんが、、、 比較結果で処理を分岐するだけです。 Sub test() Dim r As Range For Each r In ActiveSheet.Range("A1:B2") If r.Value <> r.Offset(0, 6).Value Then r.Interior.ColorIndex = 20 Else r.Interior.ColorIndex = xlNone End If Next End Sub
補足
お世話になります。 すいません。シート別の場合はどのようなVBAになりますでしょうか? sheet1 sheet2 A列 B列 A列 B列 1行 1 1 1 2 2行 2 2 3 2 おっしゃるとおり、VBAでする必要性はないのかもしれませんが、 個人的興味から、このような質問をさせて頂いております。 何卒、宜しくお願い申し上げます。
お礼
理想通りの動きです。 ご説明も参考になりました。 大変助かりました。 誠にありがとうございました。