我试图获取U列中所有不等于2.04或3.59的单元格以更改单元格颜色。
代码如下:
Private Sub Cell_Color_Change()
For Each cell In Range("U2:U19004")
If cell.Value <> 2.04 Or 3.59 Then cell.Interior.ColorIndex = 3
Next cell
End Sub
由于某些原因,该代码将整个列变为红色。 我尝试使用条件格式,发生了同样的事情。 请帮忙。谢谢!
答案 0 :(得分:2)
条件格式将执行以下操作:
一种。使用公式:ch/qos/logback/core/filter/Filter
b。选择您的填充颜色
C。将其应用于ch.qos.logback.core.filter.Filter
但是如果要编写代码,则if应该是:
AND(U2<>2.04,U2<>3.59)
答案 1 :(得分:2)
更正您的AND
和OR
:
Private Sub Cell_Color_Change()
For Each cell In Range("U2:U19004")
If cell.Value <> 2.04 And cell.Value <> 3.59 Then cell.Interior.ColorIndex = 3
Next cell
End Sub
EDIT#1:
要查找四舍五入到两位十进制数字的值,请尝试以下替代方法:
Private Sub Cell_Color_Change()
Dim cv As Variant
For Each cell In Range("U2:U19004")
cv = Application.WorksheetFunction.Round(cell.Value, 2)
If cv <> 2.04 And cv <> 3.59 Then cell.Interior.ColorIndex = 3
Next cell
End Sub
答案 2 :(得分:0)
使用VBA设置条件格式。
Option Explicit
Private Sub set_Cell_Color_Change()
With Range("U2:U19004")
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=and(round($u2, 2)<>2.04, round($u2, 2)<>3.59)"
.FormatConditions(.FormatConditions.Count).Font.Color = vbRed
End With
End Sub