【发布时间】:2016-03-17 05:57:44
【问题描述】:
我想通过让重复的单元格变为红色来管理 Excel 工作表上的重复项。我将此用于工作表保护,以防止编辑这些列的条件格式。但是,当我移动单元格信息(通过单击和拖动)时,条件格式也会从该单元格中移动。归根结底,我没有对我想要的每个单元进行重复覆盖。当我移动单元格时,有什么方法可以防止这种情况发生,或者我可以放入什么宏来处理这个问题?
我想用 VBA 做这样的事情:
Sub Duplicate()
Dim rngData As Range
Dim cell As Range
Set rngData = Range("P3:P19, P56:P58, P39:P42, P21:P25, P27:P37, P39:P42, P39:P42, P44:P54, M25:M76, B69:B77, B66:E67, B51:B64, H44:H47, D44:D47, H42, H33:H40, D33:D42, H31, D28:D31, H28:H29, D5:D8" & Cells(Rows.Count, "B").End(xlUp).Row)
For Each cell In rngData
cell.Offset(0, 0).Font.Color = vbBlack ' DEFAULT COLOR
' LOCATE DUPLICATE VALUE(S) IN THE SPECIFIED RANGE OF DATA.
If Application.Evaluate("COUNTIF(" & rngData.Address & "," & cell.Address & ")") > 1 Then
cell.Offset(0, 0).Font.Color = vbRed ' CHANGE FONT COLOR TO RED.
End If
Next cell
Set rngData = Nothing
Application.ScreenUpdating = True
End Sub
但我在以下位置收到“类型不匹配”错误: If Application.Evaluate("COUNTIF(" & rngData.Address & "," & cell.Address & ")") > 1 那么
我怎样才能解决这个问题?
【问题讨论】:
-
问题是您不能在 Countif() 中使用脱节的范围。因此,您需要将 rngdata 部分设置为范围,如本例中的
B3:P81。 -
该区域中还有一些其他项目是重复的,我不想突出显示......我还能如何解决这个问题?
-
可以设置双循环通过数据检测是否相等,不使用countif。