Алексей Шмуйлович
Итак, мы имеем некий большой отчет, в некоторых ячейках которого наблюдаем ошибки #ДЕЛ/0!, #Н/Д!, #ЗНАЧ! и иже с ними.
Как быстро справиться с ситуацией, не стирая формулы в «несчастливых» ячейках, чтобы не нарушать целостность формы?
Я использую для этих целей следующий макрос:
Sub ОшибкаВНоль()
Dim cl AsRange
On Error ResumeNext
For Each cl In Selection.Cells
If cl.Errors.Item(xlEvaluateToError).Value = TrueThen
clfrm = Right(cl.Formula, Len(cl.Formula) - 1)
cl.FormulaLocal = "=если(еошибка(" & clfrm & ");0;" & clfrm & ")"
EndIf
Next
End Sub
Макрос перебирает все ячейки в выделенном диапазоне. Если ячейка содержит ошибку вычисления, ее формула модифицируется с использованием функций рабочего листа ЕСЛИ () и ЕОШИБКА () (об этом приеме много раз писали на форуме). Теперь вместо ошибки в ячейке будет отображаться 0.
Если данные на листе изменятся и ошибка исчезнет, модифицированная формула вернет правильное значение. Таким образом мы добились своей цели.