A到E列中有数据。我想做的是在A,B,C和D列相同时比较E列中的值,然后将X的值添加到列中的行如果满足这些条件,则为F。我只想标记E列中不匹配的那些,但是当我标记一行时,应该标记所有具有相同A,B,C和D值的行。
例如,如果前三行的A,B,C和D相等,那么我想比较这些条目。由于与E1或E2相比E3中存在不匹配,我希望F1到F3显示为X。由于A,B,C和D在第4行和第5行中相等,但是E4和E5匹配,所以我希望忽略那些细胞。
我现在拥有的是:
Sub Compare()
Worksheets(Sheet1).Activate
For w = 1 To Sheet1.Cells(Rows.Count, "A").End(xlUp).Row
For v = -10 To 10
If Sheet1.Cells(w, "A").Value = Sheet1.Cells(w + v, "A").Value And Sheet1.Cells(w, "B").Value = Sheet1.Cells(w + v, "B").Value And Sheet1.Cells(w, "C").Value = Sheet1.Cells(w + v, "C").Value And Sheet1.Cells(w, "D").Value = Sheet1.Cells(w + v, "D").Value And Sheet1.Cells(w, "E").Value <> Sheet1.Cells(w + v, "E").Value Then
Sheet1.Cells(w, "F").Value = "X"
End If
Next v
Next w
End Sub
但是它不会运行。我需要进行哪些更改才能使其正常工作?
答案 0 :(得分:0)
变化很大。同样在您的问题中,关于检查3行,因此我设置了一个变量vrange=3
Sub Compare()
Dim crit As Boolean
vrange = 3
'Sheet1.Activate
Endi = Sheet1.Cells(1, 1).End(xlDown).Row
For r = 1 To Endi
vmin = WorksheetFunction.max(1, r - vrange) - r
vmax = WorksheetFunction.min(Endi, r + vrange) - r
For v = vmin To vmax
crit = True
For c = 1 To 4
crit = crit And Sheet1.Cells(r, c).value = Sheet1.Cells(r + v, c).value
Next c
If crit And Sheet1.Cells(r, 5).value <> Sheet1.Cells(r + v, 5).value Then
Sheet1.Cells(r, 6).value = "X"
End If
Next v
Next r
End Sub