2015-11-04 200 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