Профессиональные приемы работы в  Microsoft Excel

Top.Mail.Ru

Яндекс.Метрика

Эта заметка открывает серию статей, посвященных разбору полезных алгоритмов (макросов, функций) для эффективной работы в MS Office.

Итак, мы имеем некий большой отчет, в некоторых ячейках которого наблюдаем ошибки #ДЕЛ/0!, #Н/Д!, #ЗНАЧ! и иже с ними.

Как быстро справиться с ситуацией, не стирая формулы в "несчастливых" ячейках, чтобы не нарушать целостность формы?

Я использую для этих целей следующий макрос:

 Sub ОшибкаВНоль()
    Dim cl As Range
    On Error Resume Next
    For Each cl In Selection.Cells
        If cl.Errors.Item(xlEvaluateToError).Value = True Then
            clfrm = Right(cl.Formula, Len(cl.Formula) - 1)
            cl.FormulaLocal = "=если(еошибка(" & clfrm & ");0;" & clfrm & ")"
        End If
    Next
End Sub

Макрос перебирает все ячейки в выделенном диапазоне. Если ячейка содержит ошибку вычисления, ее формула модифицируется с использованием функций рабочего листа ЕСЛИ() и ЕОШИБКА() (об этом приеме много раз писали на форуме). Теперь вместо ошибки в ячейке будет отображаться 0.

Если данные на листе изменятся и ошибка исчезнет, модифицированная формула вернет правильное значение. Таким образом мы добились своей цели.

Если алгоритм Вам понравился, скопируйте его в личную книгу макросов и назначите пользовательской кнопке панели инструментов.

Вопросы по статье можно задать на форуме (ссылка ниже).

P.S.

Надеюсь, постоянные читатели присоединятся к наполнению этой серии и поделятся с нами своими разработками через форум или размещая статьи в основном разделе сайта (о том, как это сделать, см. статью Стать автором).