2015-11-04 204 views
0

我想替换单元格中的值,所以如果它有0隐藏它。Excel宏如果替换公式

excel公式如下IF(A1=0;"";A1)

我想这个automaticaly,但我有问题。


到目前为止,我想出了这一点:

Sub apply_Error_Control() 
    Dim cel As Range 

    For Each cel In Selection 
     If cel.HasFormula Then 

      cel.Formula = Replace(cel.Formula, "=", "=IFF(") & "=0" & ";" & "")" 

     End If 
    Next cel 

End Sub 

回答

1

给这个链接查看: Three ways to hide zero values

我仍然强烈建议下去单元格格路线:

Sub apply_Error_Control() 
    Dim rngCurrent As Range 

    If TypeName(Selection) = "Range" Then 
     Set rngCurrent = Selection.SpecialCells(xlCellTypeFormulas) 
     rngCurrent.NumberFormat = "0;-0;;@" 
    End If 
End Sub 

但是如果你坚持以公式为基础的方法,请在最少采用我所概述的方法,以避免在代码上运行(例如)嵌入式图表或按钮,并立即使用公式打开这些单元格 - 循环查找带有公式的单元格是乏味和缓慢的。

+0

这不是在原来的问题清楚,如果改变的单元格的公式是他们真正想要的东西。我会说这是一个坏主意 - 当谓词单元格不再给出零值时会发生什么? – NeepNeepNeep

+0

谢谢,这真的帮了我。不过我会尝试制作vba代码。即使它更复杂也很棒 – user3619789

0

这给一试(注意Selection.Cells所以它只会在你手动选择的范围内工作):

Sub apply_Error_Control() 
    Dim cel As Range, _ 
     RangeInForumla As String 

    For Each cel In Selection.Cells 
     If cel.HasFormula Then 
      RangeInForumla = Replace(cel.Formula, "=", "",1,1) 
      cel.Formula = "=IF(" & RangeInForumla & "=0," & Chr(34) & Chr(34) & "," & RangeInForumla & ")" 
     End If 
    Next cel 
End Sub 
+1

'Formula'属性需要逗号而不是分号。 – Rory

+1

只有第一个'“=”'应该被替换。 – BrakNicku

+0

更正完成! ;) – R3uK