将电子表格中的所有数字替换为低于特定值的“< 1%” - EXCEL VBA

时间:2013-12-06 15:06:07

标签: excel vba excel-vba

我需要编写一个宏来查找.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 

2 个答案:

答案 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