日本語で書いてあることを信用するとして、こういうことですか?
VBA
1Sub 会員以外の回答者()
2 Dim x As Long
3 Dim i As Long
4
5 With Sheets("Sheet1")
6 x = .UsedRange.Cells(.UsedRange.Count).Row
7 .Range("E2:E" & x).Interior.Pattern = xlNone
8 For i = x To 2 Step -1
9 If Sheets("Sheet2").Range("A:A").Find(What:=.Cells(i, 5), LookAt:=xlWhole) Is Nothing Then '一致しない場合
10 .Cells(i, 5).Interior.Color = RGB(0, 0, 255) 'E列の背景を青色に
11 End If
12 Next i
13 End With
14End Sub
15
VBA
1Sub 回答者の重複は色付け()
2 Dim i As Long, j As Long, x As Long
3
4 With Sheets("Sheet1")
5 x = .Cells(Rows.Count, 5).End(xlUp).Row 'Sheet1 E列最大行
6 .Range("E2:E" & x).Interior.Pattern = xlNone
7 For i = x To 2 Step -1 '最終行から2行目まで
8 For j = i - 1 To 2 Step -1 'iの前のから2行目まで
9 If Cells(i, 5) = Cells(j, 5) Then
10 Cells(i, 5).Interior.Color = RGB(255, 0, 0) 'E列の該当セルは背景を赤色
11 Exit For
12 End If
13 Next j
14 Next i
15
16 End With
17End Sub
18
19
ちなみに、キー(社員番号等)の重複チェックをするような場合は、Scripting.Dictionaryを使うと
簡単にかつ高速に処理が行えます。
上のマクロは2重のfor文なので、行数が10000行程度になると劇的に遅くなります。
Scripting.Dictionaryを使った場合は、1重のfor文で済むので、それほど遅くなりません。
10000行以上で試してみると違いが体感できるかと。
VBA
1'Scripting.Dictionary版
2Sub 回答者の重複は色付け2()
3 Dim sh1 As Worksheet
4 Dim maxrow As Long
5 Dim wrow As Long
6 Dim dicT As Object
7 Dim key As String
8 Set dicT = CreateObject("Scripting.Dictionary")
9 Set sh1 = Worksheets("Sheet1")
10 maxrow = sh1.Cells(Rows.Count, "E").End(xlUp).row 'Sheet1 E列最大行
11 sh1.Range("E2:E" & maxrow).Interior.Pattern = xlNone
12 For wrow = 2 To maxrow
13 key = sh1.Cells(wrow, "E").Value
14 If dicT.exists(key) = False Then
15 dicT(key) = True
16 Else
17 Cells(wrow, "E").Interior.Color = RGB(255, 0, 0) 'E列の該当セルは背景を赤色
18 End If
19 Next
20End Sub
21
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。