回答編集履歴

3

追記しました。

2020/11/08 13:32

投稿

tatsu99
tatsu99

スコア5493

test CHANGED
@@ -130,8 +130,6 @@
130
130
 
131
131
  Cells(wrow, "E").Interior.Color = RGB(255, 0, 0) 'E列の該当セルは背景を赤色
132
132
 
133
-
134
-
135
133
  End If
136
134
 
137
135
  Next

2

dictionary版を追記しました

2020/11/08 13:32

投稿

tatsu99
tatsu99

スコア5493

test CHANGED
@@ -81,3 +81,63 @@
81
81
 
82
82
 
83
83
  ```
84
+
85
+
86
+
87
+ ちなみに、キー(社員番号等)の重複チェックをするような場合は、Scripting.Dictionaryを使うと
88
+
89
+ 簡単にかつ高速に処理が行えます。
90
+
91
+ 上のマクロは2重のfor文なので、行数が10000行程度になると劇的に遅くなります。
92
+
93
+ Scripting.Dictionaryを使った場合は、1重のfor文で済むので、それほど遅くなりません。
94
+
95
+ 10000行以上で試してみると違いが体感できるかと。
96
+
97
+ ```VBA
98
+
99
+ 'Scripting.Dictionary版
100
+
101
+ Sub 回答者の重複は色付け2()
102
+
103
+ Dim sh1 As Worksheet
104
+
105
+ Dim maxrow As Long
106
+
107
+ Dim wrow As Long
108
+
109
+ Dim dicT As Object
110
+
111
+ Dim key As String
112
+
113
+ Set dicT = CreateObject("Scripting.Dictionary")
114
+
115
+ Set sh1 = Worksheets("Sheet1")
116
+
117
+ maxrow = sh1.Cells(Rows.Count, "E").End(xlUp).row 'Sheet1 E列最大行
118
+
119
+ sh1.Range("E2:E" & maxrow).Interior.Pattern = xlNone
120
+
121
+ For wrow = 2 To maxrow
122
+
123
+ key = sh1.Cells(wrow, "E").Value
124
+
125
+ If dicT.exists(key) = False Then
126
+
127
+ dicT(key) = True
128
+
129
+ Else
130
+
131
+ Cells(wrow, "E").Interior.Color = RGB(255, 0, 0) 'E列の該当セルは背景を赤色
132
+
133
+
134
+
135
+ End If
136
+
137
+ Next
138
+
139
+ End Sub
140
+
141
+
142
+
143
+ ```

1

追記しました

2020/11/08 13:30

投稿

tatsu99
tatsu99

スコア5493

test CHANGED
@@ -37,3 +37,47 @@
37
37
  ![Sheet1](7d7c3f2b9483ee96d091faeb25f63592.png)
38
38
 
39
39
  ![Sheet2](37a1639b7b50212dc5500c1c7a846cad.png)
40
+
41
+
42
+
43
+ ```VBA
44
+
45
+ Sub 回答者の重複は色付け()
46
+
47
+ Dim i As Long, j As Long, x As Long
48
+
49
+
50
+
51
+ With Sheets("Sheet1")
52
+
53
+ x = .Cells(Rows.Count, 5).End(xlUp).Row 'Sheet1 E列最大行
54
+
55
+ .Range("E2:E" & x).Interior.Pattern = xlNone
56
+
57
+ For i = x To 2 Step -1 '最終行から2行目まで
58
+
59
+ For j = i - 1 To 2 Step -1 'iの前のから2行目まで
60
+
61
+ If Cells(i, 5) = Cells(j, 5) Then
62
+
63
+ Cells(i, 5).Interior.Color = RGB(255, 0, 0) 'E列の該当セルは背景を赤色
64
+
65
+ Exit For
66
+
67
+ End If
68
+
69
+ Next j
70
+
71
+ Next i
72
+
73
+
74
+
75
+ End With
76
+
77
+ End Sub
78
+
79
+
80
+
81
+
82
+
83
+ ```