我需要编写一个宏来查找.005和0之间的值,并用“< 1%”替换它们。
我写了一个宏,它添加条件格式以将这些值更改为红色文本。我无法弄清楚如何修改我的公式以将这些值更改为“< 1%”。
Cells.Select
Range("F3").Activate
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="=0", Formula2:="=0.005"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16776961
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=0"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
答案 0 :(得分:4)
尝试使用此自定义格式,而不是宏:
[<0]-0.000;[<=0.005]"<1%";0.000
这将格式(不更改值)单元格显示数字的三位小数&lt; 0和&gt; 0.005,以及该范围内的短语“&lt; 1%”。
然后,您可以将正常的条件格式设置规则应用于整个单元格范围,无需宏。条件格式规则适用于单元格的实际值,而不是格式化的“&lt; 1%”,因此该规则应查找介于0和0.005之间的数字。
如果您想要红色文本(不是红色背景色),您甚至可以通过使用此自定义格式来避免使用条件格式:
[<0]-0.000;[Red][<=0.005]"<1%";0.000
答案 1 :(得分:0)
选择要修改的单元格并将其作为单独的宏运行:
Sub Fixup()
Dim r As Range
For Each r In Selection
v = r.Value
If v <> "" And IsNumeric(v) Then
If v >= 0 And v <= 0.005 Then
r.ClearContents
r.Value = "<1%"
End If
End If
Next r
End Sub