Excelmacros如果replace公式

我试图replace单元格中的值,所以如果它有0隐藏它。

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 

给这个链接一个视图: 三种方法来隐藏零值

我仍然强烈build议下单元格式化路线:

 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 

但是如果你坚持以公式为基础的方法,请至less使用我已经概述的方法,以避免在(例如)embedded图表或button上运行代码,并立即使用公式来触发这些单元格 – 循环find一个公式是乏味和缓慢的。

试试这个(注意Selection.Cells ,它只会在你手动select的范围内工作):

 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