如何将IFERROR应用于Excel中的所有单元格

时间:2015-10-02 07:08:35

标签: excel excel-vba vba

我有很多细胞都有#DIV / 0!所以我需要把IFERROR功能。有没有办法将此公式应用于所有单元格,而不是手动将公式放在每个单元格中?

我试过这个VBA代码,但我正在寻找更简单的东西。

Sub WrapIfError()
Dim rng As Range
Dim cell As Range
Dim x As String

  If Selection.Cells.Count = 1 Then
    Set rng = Selection
    If Not rng.HasFormula Then GoTo NoFormulas
  Else
      On Error GoTo NoFormulas
        Set rng = Selection.SpecialCells(xlCellTypeFormulas)
      On Error GoTo 0
  End If

  For Each cell In rng.Cells
    x = cell.Formula
    cell = "=IFERROR(" & Right(x, Len(x) - 1) & "," & Chr(34) & Chr(34) & ")"
  Next cell

Exit Sub

'Error Handler
NoFormulas:
  MsgBox "There were no formulas found in your selection!"

End Sub

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

这些版本中的一个可能更容易教授。

Sub apply_Error_Control()
    Dim cel As Range

    For Each cel In Selection
        If cel.HasFormula Then
            'option 1
            cel.Formula = Replace(cel.Formula, "=", "=IFERROR(", 1, 1) & ", """")"
            'option 2
            'cel.Formula = "=IFERROR(" & Mid(cel.Formula, 2) & ", """")"
        End If
    Next cel

End Sub

我提供了两种方法来应用IFERROR function作为' wapper' 进行错误控制。要使用第二个选项,请注释第一个选项并取消注释第二个选项。

选择一个或多个单元格,然后运行宏;通常是 Alt + F8 然后从工作表中运行