Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Коллекция алгоритмов. Массовое исправление ошибок #ДЕЛ/0!, #Н/Д! и др.


Профессиональные приемы работы в Microsoft Excel. Коллекция алгоритмов. Массовое исправление ошибок #ДЕЛ/0!

Выпуск 16
от 2007-03-15

Подписчиков: 5861

Рассылка сайта "Эффективные офисные технологии"

Главная
Статьи
Стать автором
Скачать
Форум
О проекте
Поддержать проект

Читать в Яндекс.Ленте 
Google Reader or Homepage
Add to My Yahoo!
Подписаться в NewsGator Online 

Новости сайта в формате RSS
Новые сообщения форума в формате RSS
Читать в Яндекс.Ленте

Порекомендуйте нашу рассылку друзьям

Обратная связь
Поддержка
(форум рассылки)

\'Бухгалтерский
Бухгалтерский и налоговый учет в программе 1С:Бухгалтерия 8, изд.2

Наши рассылки:

Рассылки Subscribe.Ru
Православные:
Ежедневные библейские чтения
Смоленский календарь
Для выздоравливающих алкоголиков и наркоманов
Книга "День за днем"
Книга "24 часа в сутки"
Ежедневные размышления анонимного алкоголика
Самообразование:
"Профессиональные приемы работы в Microsoft Excel" NEW

Наши сайты

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

bonifatiy.narod.ru
В помощь выздоравливающим алкоголикам и наркоманам

Собор Смоленских святых. Жития, иконы, календарь памятных дат Смоленской епархии.

StudentTools.Narod.Ru Для тех, кто любит учиться

Коллекция алгоритмов. Массовое исправление ошибок #ДЕЛ/0!, #Н/Д! и др.

Эта заметка открывает серию статей, посвященных разбору полезных алгоритмов (макросов, функций) для эффективной работы в 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.

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

Новые разделы форума
Форум, пожалуй, давно стал основным разделом нашего сайта. Иногда у меня не хватает времени наподготовку новых статей, пополнение раздела загрузок, а на форуме Вам всегда рады помочь наши постоянные посетители, среди которых есть настоящие эксперты. 
Рад сообщить Вам, что теперь на форуме можно задать вопросы не только по Excel, но и по другим приложениям MS Office (Word, Access, Outlook и т. д.), по организации документооборота, электоронной почты, архивирования, сканирования и др. Буду рад, если Вы выскажете пожелания по добавлению в форум других разделов. 
Добро пожаловать на обновленный форум!

В избранное