プロが教える店舗&オフィスのセキュリティ対策術

列Aを基準として、列Aと列Bを比較して異なっているセルがあればセルを赤くしたいプログラムを作りたいのですが、スキルが無い為にどのように作ってよいのかわかりません。
すみませんが、アドバイスをお願いいたします。

A 回答 (7件)

> 列Aを基準として、列Aと列Bを比較して異なっているセルがあればセルを赤くしたい



これじゃ、No1さんのようにしか解釈できませんよ。
ご希望はこうですか?

Sub test2()
last = Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row 'A列最終行
last2 = Cells(ActiveSheet.Rows.Count, "B").End(xlUp).Row 'B列最終行
For i = 1 To last2 'B列1行から最終行までを検索値とする

Set x = ActiveSheet.Range("A1:A" & last).Find(What:=Cells(i, "B").Value, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) 'A列1行から最終行までを検索
If x Is Nothing Then Cells(i, "B").Interior.ColorIndex = 3 '無ければ赤く
Next
End Sub
    • good
    • 0

#5です



#6さんの懸念事項が、見事自分が記述した条件付書式にハマってます orz

#5で提示したことは忘れて#6さんの回答を参照して下さい or2
    • good
    • 0

こんにちは。

maruru01です。

私も条件付書式での方法を。
B1を選択して、条件付書式で、
「数式が」
「=NOT(COUNTIF(A:A,B1))*LEN(B1)」
として、書式を設定します。
あとは、これをB列下行へ書式コピー。
ところで、これだとアルファベットの大文字と小文字が区別されません。
大文字と小文字をきちんと区別したい場合は、条件付書式の数式を、
「=NOT(OR(EXACT(($A$1:$A$10),B1)))*LEN(B1)」
にします。
なお、A列の範囲は適宜変更して下さい。
ただし、後者の場合は、「A:A」のような列全体の指定は出来ません。
必ず、「$A$1:$A$10」のように、範囲で指定(かつ絶対参照で)して下さい。
(A列めいっぱい指定したいなら、「$A$1:$A$65535」にでもして下さい。)
    • good
    • 0

すごいですね


"専門家"と"一般人"が「自信あり」で入り乱れています

質問者さんが「VBA」でと要望されているので皆さんVBAのコードで回答されていますが、
VBAを使用しない方法を置いときますね

条件付書式:
「数式が」「=B1<>INDEX($A$1:$A$65535,MATCH(B1,$A$1:$A$65535))」
    • good
    • 0

少し、質問の文章とご要望は違っているようですね。


後は、工夫してみてください。

Sub test()
 Dim r As Range
 Dim c As Range
 Dim rtn As Variant 'Matchの戻り値
 With ActiveSheet
  Set r = .Range("A1", .Range("A65536").End(xlUp))
  Set s = .Range("B1", .Range("B65536").End(xlUp))
  For Each c In s
   rtn = Application.Match(c.Value, r, 0)
   If IsError(rtn) Then
    c.Interior.ColorIndex = 3 'パターン赤
   End If
  Next c
 End With
End Sub
    • good
    • 0

#1の方の式では列AとBが同じ値のセルが赤くなってしまいます。


B列を選択しメニューの書式の条件付き書式で
[数式が]を選び =A1<>B1 と設定してください。書式はパターンで赤を選択。
これで列Aと列Bを比較して異なっているセルがあればセルを赤くできます。
または
条件付き書式で[セルの値が]を選び[次の値に等しくない]を選び=A1と設定してください。書式はパターンで赤を選択。
マクロを記述するならこんな感じです。
Sub Macro1()
Columns("B:B").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=A1<>B1"
Selection.FormatConditions(1).Interior.ColorIndex = 3
End Sub
    • good
    • 0

エクセルでしたらVBAを使用しなくても


B列を選択した状態でメニューバーの[書式]→[条件付き書式]
[数式が][=A1=B1]と設定して
[書式]の[パターン]で背景を赤に設定すればできます。

この回答への補足

A1セルとB1セルを対で比較するのではなく、
A列(ソートされていない)、B列(ソートされていない)ものでも異なっている部分を
発見し、セルを赤くさせるということです。


A B
B C
C F
D A

この場合FがA列に存在しないので、赤くする。
ということです。すみませんが、アドバイスをお願いします。

補足日時:2005/04/18 13:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています