こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBAでの値の比較

お世話になります。
Excel VBAでの値の比較方法についてご教授頂きたく存じます。
下記のような値がセルに入っていると仮定しまして、

セルA1とセルG1を比較する
セルA2とセルG2を比較する
セルB1とセルH1を比較する
セルB2とセルH2を比較する
値が違う場合のみ、A列、又は、B列のセルの色を変更したいのですが・・・。
下記例の場合であれば、B1とA2がセルの色が変われば良いです。

   A列 B列    G列 H列
1行  1  1     1   2
2行  2  2     3   2


VBAで実現したいと思います。
何卒、宜しくお願い申し上げます。

投稿日時 - 2006-11-05 14:29:29

QNo.2519247

すぐに回答ほしいです

質問者が選んだベストアンサー

#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

投稿日時 - 2006-11-06 21:47:23

お礼

理想通りの動きです。
ご説明も参考になりました。
大変助かりました。
誠にありがとうございました。

投稿日時 - 2006-11-07 11:35:46

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

No.1の方もかかれているように、VBAを使わずとも条件付き書式でできるので、一応その設定方法を書いておきます。

A列全体を選択して「書式」>「条件付き書式」で
「セルの値が」「次の値に等しい」「=$G1」とし、「書式」ボタンを押して、「パターン」タブを選択し、背景色を指定してOK。

B列の場合も上記と同じ手順で =$H1と比較するように設定。

投稿日時 - 2006-11-05 16:16:51

ANo.1

条件付書式で簡単に実現出来る事をわざわざ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

投稿日時 - 2006-11-05 14:53:58

補足

お世話になります。

 すいません。シート別の場合はどのようなVBAになりますでしょうか?


   sheet1     sheet2
   A列 B列    A列 B列
1行  1  1     1   2
2行  2  2     3   2



おっしゃるとおり、VBAでする必要性はないのかもしれませんが、
個人的興味から、このような質問をさせて頂いております。
何卒、宜しくお願い申し上げます。

投稿日時 - 2006-11-06 16:41:24

あなたにオススメの質問