Newcomposers.ru

IT Мир
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Обнаружена ошибка деление на ноль 1с

Когда обнаружена ошибка деление на ноль 1С

Цена решения проблемы

Но чтобы дать конечную оценку, надо смотреть и уточнять детали. позвоните обсудим.

Обычно порядок работ следующий: приезжаю или подключаюсь удаленно, смотрю, даю оценку работ, устраивает — делаю.

Мои услуги

  • Решение когда обнаружена ошибка деление на ноль 1С
  • Продажа и настройка 1С:Предприятие
  • Загрузка товаров в 1С из Excel, dbf, xml, txt и т.д.
  • Обучение — курсы по работе с 1С
  • Обновление 1С (версии 7.7, 8.1, 8.2 и 8.3)
  • Исправление и восстановление баз 1С
  • Сброс забытых паролей
  • Программирование в 1С — любые задачи
  • Гарантия конфиденциальности!

Сравнение цены часа работ, это боль и слезы 1С.

Программист с опытом работы 15 лет — который может за 3 минуты рассказать главбуху ГазпромаАэрофлотаРЖД на каком счете «раки зимуют» и программист с опытом 1 год — это «просто» программисты и для клиента они ОДИНАКОВЫЕ!

Как такое возможно?

Всё для клиента и чтобы он не задавал лишних вопросов. но:

1. Вы знаете какой программист решает вашу задачу? С опытом 10 лет или 1 год?

2. Вы знаете сколько действительно нужно времени на решение задачи?

3. Может вы знаете с какой скоростью думает программист?

4. А еще лучше — вспомните профессии с оплатой по часам где выгодно делать максимально быстро?

5. Итого — чем больше тратишь времени на работу — тем больше ты заработает!

Вам еще не смешно? Программисту просто выгодно рассказывать часами (подбирая нужные слова) как «считать на пальцах одной руки».

Замечу что — если твоя работа «вешать лапшу» + программировать, это не очень то и приятно. но а как по другому продавать часы?

Поэтому я даю оценку — за решение задачи!

Сферы деятельности моих клиентов: торговля одеждой, торговля строительными материалами, торговля авто запчастями, услуги СТО (автосервис), торговля косметикой, торговля мебелью, торговля инструментом (для ремонта), торговля электрикой, розничная торговля (практически все ее сферы) и т.д.

Мои клиенты, в основном это компании в сфере торговли. Которые обращаются по оперативным работам в 1С и когда обнаружена ошибка деление на ноль 1С.

Мои готовые модули (для автомобильной отрасли) можно посмотреть здесь: www.auto-soft-lab.ru.
Любой модуль можно адаптировать для любой сферы бизнеса.

Сопровождение и обслуживание 1С

  • Специалист 1С с общим опытом программирования — более 8 лет.

Сразу говорю цену и сроки работ.

Всегда на связи — дозвониться можно всегда!

Предлагаю готовые решения — а не изобретаю каждый раз «велосипед».

Когда обнаружена ошибка деление на ноль 1С — решаю проблему!

Я провожу индивидуальное обучение !
Обучение занимает 3-4 часа, и поверьте моему опыту, этого достаточно чтобы научиться работать в 1С. Бонус — в любое удобное время (день), еще 1 час обучения для ответов на накопившиеся у вас вопросы.

Три самых частых вопроса

  • 1. Мне точно не хватит 4 часа!
    Ответ: поверьте, хватит. смотрите видео пример обучения в 1С.

2. Обучение дистанционное? как-то мутно.
Ответ: если я буду стоять рядом, запоминать Вы лучше не станете.

  • 3. Я точно не запомню, и будет много вопросов которых небыло на обучение
    Ответ: во время обучения я отвечаю на все Ваши вопросы.
    Курсы, это курсы, а ответы на вопросы во время работы — это сопровождение 1С (оно у меня тоже есть).
  • План обучения 1С:Предприятие

    • 1. Как купить товар
    • 2. Как назначить ему цены
    • 3. Как распечатать ценники и прайс-лист
    • 4. Как оформить продажу
    • 5. Как посмотреть отчеты по закупкампродажамостаткам
    • 6. Как провести инвентаризацию
    • 7. Ответы на ВСЕ ваши вопросы!

    Обучение проводится дистанционно, надо только договорится о времени обучения.

    Результат обучения

    • 1. Вы уверенно работаете в 1С
    • 2. Вы знаете что умеет и чего не умеет 1С (это нужно чтобы вам не «вешали лапшу» при доработки 1С )
    • 3. Вы получаете видео запись обучения

    100% гарантия возврата средств

    Оплатив курс, если вам не подойдет формат обучения, сообщите об этом в течении первого часа обучения, и без лишних вопросов верну ваши деньги.

    ошибка деления на 0 в 1с 7.7

    Перейти к странице

    Nastyusha

    Доброго времени суток.
    На форме документа есть несколько закладок. При создании нового документа одним пользователем выскакивает ошибка деление на 0.
    Везде, где встречается деление я поставила проверку, но ошибка не пропала.
    условие типа такого:

    Если ШиринаБумаги <>0 Тогда
    КолвоБумСПриладкой = КолвоБумаги / ШиринаБумаги;
    КонецЕсли; // ШиринаБумаги <>0 Тогда

    Может кто знает, как исправить эту ошибку

    Nastyusha

    Nastyusha

    везде, где есть деление добавила Число, но ошибка все равно не пропала.
    в начале модуля есть процедура, на которую постоянно в модуле едет ссылка. может из-за нее возникает ошибка деление на 0?

    .
    If Trimall(Печать.Процент) <> Trimall(Формат(?(Печать.Итог(«Колво»)=0,0,Печать.Колво/Печать.Итог(«Колво»)*100),»Ч6.2, «))+»%» Then
    .

    как правильно преобразовать Печать.Итог(«Колво») в число.

    и из-за чего ошибка деление на 0 возникает толmrj при создании нового документа?

    mazzzay75

    vitfil

    Andrus

    Да тут и флудить не особо надо

    Nastyusha

    до открытия темы на форуме я везде в модуле документа сделала проверку, если деление переменную, то условие, чтобы переменная не была равна 0.
    Ошибка возникает только на 1 вкладке и когда какие-либо значения равны 0, то тоже выскакивает эта ошибка. И еще при заполнении поля ввода ДатаОтгрузкиПлан.

    на др. вкладках не возникает этой ошибки, даже если значения =0

    vitfil

    Andrus

    vitfil
    Лично мое мнение то это просто идет так называемая защита от дурака. Потому что если посчитать со стороны математики то 0/0 может равнятся как 1 так и 321 и.т.д. вот я думаю что на уровне компиляторов и трансляторов просто защищают что бы не допускать непонятных расчетов.

    Вот более подробно на уровне математики доказано что на 0 делить некорректно.

    evgenyatam

    unknown181538

    evgenyatam

    unknown181538

    Дайнеко

    Здравствуйте, Nastyusha. Как увидел в материалах знакомое «ДатаОтгрузкиПлан», вспомнил «Факт» так и прослезился.
    О вопросе: Я понимаю проблемы две:
    — не понятно ГДЕ она возникает?
    — ну а потом вторая — ПОЧЕМУ?

    ГДЕ:
    Если программа матюкнулась смачно (это значит, как верно пишет unknown181538 выдала сообщение с кусочком текста и номером строки), то тут и искать нечего. А вот когда подленько выскакивают сообщения при каждом нажатии клавиатуры, то однозначно это ФОРМУЛА в выражении на диалоге. А еще так ведут себя выражения в печатной таблице. Нет другого способа кроме как пересмотреть их. Для удобства поиска лучше не ломать над ними голову, а очищать поочередно.

    Читать еще:  Произошла ошибка конвертации

    ПОЧЕМУ:
    Если ШиринаБумаги <>0 Тогда
    КолвоБумСПриладкой = КолвоБумаги / ШиринаБумаги;
    КонецЕсли;
    Вы спотыкаетесь на пустое значение. Если Перем ШиринаБумаги объвлена, но ей ничего не присваивалось, то программа войдет в условие. Можете не верить — проверьте. В отладчике эта переменная покажется так: «ШиринаБумаги=» (после «=» ничего). И это не равно 0.

    ЧТО ДЕЛАЕМ:
    Вы навтыкали в текст модуля кучу проверок на 0. Понятно, что красоты тексту это не придало. Я сейчас так не делаю. У меня есть глобальная функция:

    Исправление ошибки #ДЕЛ/0!

    Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

    Ошибка #ДЕЛ/0! возникает в Microsoft Excel, когда число делится на ноль (0). Это происходит, если вы вводите простую формулу, например =5/0, или если формула ссылается на ячейку с 0 или пустую ячейку, как показано на этом рисунке.

    Есть несколько способов исправления этой ошибки.

    Убедитесь в том, что делитель в функции или формуле не равен нулю и соответствующая ячейка не пуста.

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

    Введите в ячейку, которая используется в формуле в качестве делителя, значение #Н/Д, чтобы изменить результат формулы на #Н/Д, указывая на недоступность делителя.

    Много раз, когда #DIV/0! не удается избежать ошибки, так как ваши формулы ожидают ввода от вас или другого пользователя. В этом случае сообщение об ошибке не должно отображаться, поэтому есть несколько методов обработки ошибок, которые можно использовать для подавления этой ошибки во время ожидания ввода.

    Оценка знаменателя на наличие нуля или пустого значения

    Самый простой способ подавить #DIV/0! чтобы оценить существование знаменателя, используйте функцию если . Если значение равно 0 или нет, отобразится значение 0 или No в качестве результата формулы, а не #DIV/0! значение ошибки, в противном случае вычисляется формула.

    Например, если формула возвращает ошибку = a2/a3, используйте выражение = если (a3; a2/a3; 0) , чтобы вернуть значение 0 или = если (A3, a2/a3, «»), чтобы вернуть пустую строку. Вы также можете отобразить пользовательское сообщение следующего вида: = если (A3, a2/a3, «требуется ввод»). С помощью функции ЧАСТное первого примера вы бы могли использовать = если (A3, частное (a2; a3); 0). Это говорит о том , что приложение Excel if (A3) возвращает результат формулы, в противном случае — пропуск.

    Использование функции ЕСЛИОШИБКА для подавления ошибки #ДЕЛ/0!

    Кроме того, эту ошибку можно отключить путем вложения операции деления внутрь функции ЕСЛИОШИБКА. Опять же, используя a2/a3, можно использовать = ЕСЛИОШИБКА (a2/a3, 0). Это сообщает Excel, если формула возвращает ошибку, а затем возвращается значение 0, в противном случае возвращают результат формулы.

    В версиях до Excel 2007 можно использовать синтаксис ЕСЛИ(ЕОШИБКА()): =ЕСЛИ(ЕОШИБКА(A2/A3);0;A2/A3) (см. статью Функции Е).

    Примечание: методы ЕСЛИОШИБКА и IF (ERROR ()) являются обработчиками ошибок, в результате чего они будут подавлять все ошибки, а не только #DIV/0!. Перед применением обработки ошибок необходимо убедиться, что формула работает правильно, в противном случае вам может не быть ясно, что Ваша формула работает не так, как ожидается.

    Совет: Если в Microsoft Excel включена проверка ошибок, нажмите кнопку рядом с ячейкой, в которой показана ошибка. Выберите пункт Показать этапы вычисления, если он отобразится, а затем выберите подходящее решение.

    У вас есть вопрос об определенной функции?

    Помогите нам улучшить Excel

    У вас есть предложения по улучшению следующей версии Excel? Если да, ознакомьтесь с темами на портале пользовательских предложений для Excel.

    Ошибка формата потока 1С — методика исправления

    Ошибка формата потока 1С Предприятие — одна из самых распространенных ошибок, возникающих при работе с 1С программами. Из публикации вы узнаете, как исправляется ошибка формата потока 1С Предприятие 8.3 без обращения к администраторам или партнерам 1С, проверенными на практике способами.

    Работаешь в программе 1С, все замечательно, а тут неизвестно из-за чего появилась небольшая форма с уведомлением «Ошибка формата потока» и с вариантами «Завершить работу» в программе или «Перезапустить» программу. Перезапуск, естественно, ни к чему не приводит, ошибка появляется снова…

    Я описал ваш случай? Не огорчайтесь! Вы не первый пользователь 1С у кого эта ошибка появилась, и, уверен, что не последний. За время работы с 1С программами выработался алгоритм исправления этой ошибки, которым я хочу поделиться в этой публикации. Поэтому, читайте и исправляйте эту 1С «занозу»! Итак…

    …из публикации вы узнаете:

    Ошибка формата потока 1С Предприятие 8.3 — одна из самых распространенных в работе 1С:Предприятие и при этом одна из самых не информативных. Вылетает окошко с сообщением об ошибке и никакой дополнительной информации, что и где сломалось и как починить. Поэтому, исправление ошибки формата потока 1С начнем с вычисления причин появления этой ошибки, что бы лучше знать «врага» в лицо.

    Почему возникает ошибка формата потока 1С Предприятие 8.3

    Что бы выяснить причины появления ошибки формата потока 1С 8.3 необходимо рассмотреть область данных 1С платформы. Тут хотелось бы отметить, что платформа 1С во время работы использует:

    • жесткий диск, на который во время работы платформы 1С сохраняются временные файлы настроек, логи, сервисная и пользовательская информация;
    • сеть (в случае сетевой работы), по средствам которой происходит обмен пакетами данных с другими компьютерами или серверами сети (в случае клиент-серверного варианта работы 1С Предприятие).

    Причем, платформа 1С Предприятие использует указанные ресурсы постоянно.

    А теперь представьте, что произошел скачек электричества, поэтому часть сетевого пакета исказилась и была записана в некорректной форме или отключили электричество и данные, которые писались в кеш 1С записались частично, что в этом случае произойдет?

    Читать еще:  Слова с исправленными ошибками

    Правильно! При попытке прочитать эти данные и их обработать, 1С не сможет их «прожевать» и выплюнет с «ошибкой формата потока». Вот такой «верблюд» получился и у вас. Давайте рассмотрим, что можно с этим сделать.

    Первым делом необходимо сделать копию информационной базы 1С на случай порчи рабочей базы при её исправлении.

    Эффективный способ исправить ошибку формата потока 1С Предприятие 8.3 для файловых баз данных 1С

    Если вы работая в файловой версии 1С Предприятие , стали жертвой этой напасти, то хочу предложить способ от её избавления, работающий в 78% случаев.

    • Для этого необходимо зайти в каталог, где хранится база данных 1С Предприятие 8.3 и удалить все файлы и папки, КРОМЕ ФАЙЛА ДАННЫХ 1Cv8.CD . Операция требует сноровки, поэтому будьте осторожны, не переборщите с удалением! 🙂

    Путь до каталога базы данных 1С Предприятие 8.3 вы можете посмотреть при запуске программы — он будет расположен внизу окна запуска 1С Предприятие 8.3.

    По поводу удаленных файлов не переживайте — это все служебные файлы, которые будут созданы заново в правильном формате при следующем запуске 1С Предприятие 8.3.

    • Если предложенный способ не помог, то для исправления файловых баз в 1С Предприятие 8.3 предусмотрена утилита chdbfl.exe. Проверьте структуру вашей базы, воспользовавшись этой утилитой.

    Ошибка формата потока 1С 8.3 не исчезла? Плохо! Читаем дальше.

    Стандартные шаги по исправлению ошибки формата потока 1С Предприятие 8.3

    Если указанные выше рекомендации не помогли в исправлении ошибки формата потока 1С или если у вас клиент-серверная база данных 1С, то следующими шагами исправления будут стандартные операции, возникающие при любых ошибках:

    На эти темы были написаны подробные публикации, поэтому тут мне добавить нечего. Читайте статьи и делайте всё в точности по написанному.

    Если после проделанных с базой манипуляций «ошибка формата потока» все равно появляется, в этом случае пробуйте ещё один проверенный способ:

    • выгрузите вашу базу с файл *.dt, создайте пустую базу 1С и загрузите в неё выгруженный до этого файл *.dt. В выполнении этой операции вам поможет статья про резервное копирование базы 1С Предприятие 8.3.

    На этом шаге исправить ошибку формата потока 1С Предприятие 8.3 получается в 94% случаев. Но что делать есть не спало.

    Нестандартные способы исправить ошибку формата потока 1С Предприятие 8.3

    До этого были проделаны все стандартные операции по исправлению данной ошибки, и если до этого момента ошибка не устранена, значит придется заняться «творчеством». Ещё этот процесс называют «танцами с бубнами» или «шаманством»… Поэтому, если до этого вы не «танцевали», то ошибка формата потока 1С Предприятие 8.3 может вам составить отличную пару. Итак, продолжим:

    • Пробуйте загрузить файл *.dt в новой базе данных, созданной на другом компьютере . Этим вы исключите вероятность некорректно работающего железа или программ компьютера, где находится база.
    • Удалите (именно УДАЛИТЕ через Установку и удаление программ) платформу 1С и установите заново, желательно новейшую версию. Исключаем некорректно работающие исполняемые файлы платформы, которые могли быть подпорчены вирусами или «посыпавшимися» секторами жесткого диска или другими способами.
    • Обновите конфигурацию на следующий релиз или загрузите текущую конфигурацию из файла *.cf с полным замещением объектов.
    • Отключите брандмауэр и антивирусы. Существует вероятность, что исполняемый файл был замечен в подозрительной активности антивирусом и помещен в карантин или остался под жестким контролем с блокировкой «опасных» действий. В любом случае — исключаем вариант карантина антивирусов.
    • Удалите временные файлы на компьютере. Они находятся в нескольких местах:
    1. В профиле пользователя, для поиска введите %Temp% в адресной строке проводника.
    2. В папке C:WindowsTemp
    3. Иногда на диске C:Temp
    • Ещё один способ был однажды применен, когда ничто не помогало — создали полный начальный образ базы данных и потом отвязали его от РИБ, сделав независимым. Получили ту же базу, пропустив начальную через механизмы РИБ (как через мясорубку 🙂 ) .

    Ещё пара способов исправить ошибку формата потока 1С Предприятие 8.3

    Есть ещё пара способов с хакерским подходом:

    • загрузить файл *.dt в клиент-серверную базу данных (если база с ошибкой формата потока клиент-серверная, то делаем на ней, предварительно сделав копию) и очистить файл от всех записей в таблице «configsave» через программную консоль.
    • в утилите Tool_1CD есть проверка формата потока. Скачайте эту утилиту и проверяйте поток.

    Описанные в публикации способы исправления ошибки формата потока были проверены на практике — работают!

    Надеюсь, что ничего не забыл. Если вдруг всплывет в памяти что-то ещё, то обязательно дополню публикацию.

    Всем читателям отличного настроения! Пусть ошибка формата потока вас обходит стороной. 😉

    Если вам что-то не понятно в вопросе как исправляется ошибка формата потока 1С:Предприятие 8.3, то вы можете задать вопрос в комментариях к статье или на форуме сайта.
    Что бы не потерять статью в просторах интернета — сохраните её к себе в социальные сети или в закладки.

    Как в ячейке с формулой вместо ошибки показать 0

    Случаются ситуации, когда в рабочей книге на листах создано много формул, выполняющих различные задачи. При этом формулы созданы когда-то давно, возможно даже на вами. И формулы возвращают ошибки. Например #ДЕЛ/0! (#DIV/0!) . Эта ошибка возникает, если внутри формулы происходит деление на ноль: = A1 / B1 , где в B1 ноль или пусто. Но могут быть и другие ошибки(#Н/Д, #ЗНАЧ! и т.д.). Можно изменить формулу, добавив проверку на ошибку:
    =ЕСЛИ(ЕОШ( A1 / B1 );0; A1 / B1 )
    =IF(ISERR( A1 / B1 ),0, A1 / B1 )
    аргументы:
    =ЕСЛИ(ЕОШ(1 аргумент);2 аргумент; 1 аргумент)
    Эти формулы будут работать в любой версии Excel. Правда, функция ЕОШ не обработает ошибку #Н/Д (#N/A) . Чтобы так же обработать и #Н/Д необходимо использовать функцию ЕОШИБКА:
    =ЕСЛИ(ЕОШИБКА( A1 / B1 );0; A1 / B1 )
    =IF(ISERROR( A1 / B1 ),0, A1 / B1 )
    Однако далее по тексту я буду применять ЕОШ(т.к. она короче) и к тому же не всегда надо «не видеть» ошибки #Н/Д.
    Но для версий Excel 2007 и выше можно применить чуть более оптимизированную функцию ЕСЛИОШИБКА (IFERROR) :
    =ЕСЛИОШИБКА( A1 / B1 ;0)
    =IFERROR( A1 / B1 ,0)
    аргументы:
    =ЕСЛИОШИБКА(1 аргумент; 2 аргумент)

    1 аргумент: выражение для вычисления
    2 аргумент: значение или выражение, которое необходимо вернуть в ячейку в случае ошибки в первом аргументе.

    Читать еще:  Input image html

    Почему ЕСЛИОШИБКА лучше и я называю её более оптимизированной? Разберем первую формулу подробнее:
    =ЕСЛИ(ЕОШ( A1 / B1 );0; A1 / B1 )
    Если вычислить пошагово, то увидим, что сначала происходит вычисление выражения A1 / B1 (т.е. деление). И если его результат ошибка – то ЕОШ вернет ИСТИНА (TRUE) , которое будет передано в ЕСЛИ (IF) . И тогда функцией ЕСЛИ(IF) будет возвращено значение из второго аргумента 0.
    Но если результат не является ошибочным и ЕОШ (ISERR) возвращает ЛОЖЬ (FALSE) – то функция заново будет вычислять уже вычисленное ранее выражение: A1 / B1
    С приведенной формулой это особой роли не играет. Но если применяется формула вроде ВПР (VLOOKUP) с просмотром на несколько тысяч строк – то вычисление два раза может значительно увеличить время пересчета формул.
    Функция же ЕСЛИОШИБКА (IFERROR) один раз вычисляет выражение, запоминает его результат и если он ошибочен возвращает записанное вторым аргументом. Если же ошибки нет, то возвращает запомненный результат вычисления выражения из первого аргумента. Т.е. вычисление по факту происходит один раз, что практически не будет влиять на скорость общего пересчета формул.
    Поэтому если у вас Excel 2007 и выше и файл не будет использоваться в более ранних версиях – то имеет смысл использовать именно ЕСЛИОШИБКА (IFERROR) .

    Для чего формулы с ошибками вообще исправлять? Обычно делается для более эстетичного отображения данных в отчетах, особенно если отчеты потом руководству отправляют.

    Итак, есть на листе такие формулы, ошибки которых надо обработать. Если подобных формул для исправления одна-две(да даже 10-15) – то проблем почти нет заменить вручную. Но если таких формул несколько десятков, а то и сотен – проблема приобретает почти вселенские масштабы :-). Однако процесс можно упростить через написание относительно простого кода Visual Basic for Application.
    Для всех версий Excel:

    Sub IfIsErrNull() Const sToReturnVal As String = «0» ‘если необходимо вместо нуля возвращать пусто ‘Const sToReturnVal As String = «»»»»» Dim rr As Range, rc As Range Dim s As String, ss As String On Error Resume Next Set rr = Intersect(Selection, ActiveSheet.UsedRange) If rr Is Nothing Then MsgBox «Выделенный диапазон не содержит данных», vbInformation, «www.excel-vba.ru» Exit Sub End If For Each rc In rr If rc.HasFormula Then s = rc.Formula s = Mid(s, 2) ss = «=» & «IF(ISERR(» & s & «),» & sToReturnVal & «,» & s & «)» If Left(s, 9) <> «IF(ISERR(» Then If rc.HasArray Then rc.FormulaArray = ss Else rc.Formula = ss End If If Err.Number Then ss = rc.Address rc.Select Exit For End If End If End If Next rc If Err.Number Then MsgBox «Невозможно преобразовать формулу в ячейке: » & ss & vbNewLine & _ Err.Description, vbInformation, «www.excel-vba.ru» Else MsgBox «Формулы обработаны», vbInformation, «www.excel-vba.ru» End If End Sub

    Для версий 2007 и выше

    Sub IfErrorNull() Const sToReturnVal As String = «0» ‘если необходимо вместо нуля возвращать пусто ‘Const sToReturnVal As String = «»»»»» Dim rr As Range, rc As Range Dim s As String, ss As String On Error Resume Next Set rr = Intersect(Selection, ActiveSheet.UsedRange) If rr Is Nothing Then MsgBox «Выделенный диапазон не содержит данных», vbInformation, «www.excel-vba.ru» Exit Sub End If For Each rc In rr If rc.HasFormula Then s = rc.Formula s = Mid(s, 2) ss = «=» & «IFERROR(» & s & «,» & sToReturnVal & «)» If Left(s, 8) <> «IFERROR(» Then If rc.HasArray Then rc.FormulaArray = ss Else rc.Formula = ss End If If Err.Number Then ss = rc.Address rc.Select Exit For End If End If End If Next rc If Err.Number Then MsgBox «Невозможно преобразовать формулу в ячейке: » & ss & vbNewLine & _ Err.Description, vbInformation, «www.excel-vba.ru» Else MsgBox «Формулы обработаны», vbInformation, «www.excel-vba.ru» End If End Sub

    Как это работает
    Если не знакомы с макросами, то для начала лучше прочитать как их создавать и вызывать: Что такое макрос и где его искать?, т.к. может случиться так, что все сделаете правильно, но забудете макросы разрешить и ничего не заработает.

    Копируете приведенный код, переходите в редактор VBA(Alt+F11), создаете стандартный модуль(InsertModule) и просто вставляете в него этот код. Переходите в нужную книгу Excel и выделяете все ячейки, формулы в которых необходимо преобразовать таким образом, чтобы в случае ошибки они возвращали ноль. Жмете Alt+F8, выбираете код IfIsErrNull(или IfErrorNull, в зависимости от того, какой именно скопировали) и жмете Выполнить.
    Ко всем формулам в выделенных ячейках будет добавлена функция обработки ошибки. Приведенные коды учитывают так же:
    -если в формуле уже применена функция ЕСЛИОШИБКА или ЕСЛИ(ЕОШ, то такая формула не обрабатывается;
    -код корректно обработает так же функции массива;
    -выделять можно несмежные ячейки(через Ctrl).
    В чем недостаток: сложные и длинные формулы массива могут вызвать ошибку кода, в связи с особенностью данных формул и их обработкой из VBA. В таком случае код напишет о невозможности продолжить работу и выделит проблемную ячейку. Поэтому настоятельно рекомендую производить замены на копиях файлов.
    Если значение ошибки надо заменить на пусто, а не на ноль, то надо строку

    Const sToReturnVal As String = «0»

    Удалить, а перед строкой

    ‘Const sToReturnVal As String = «»»»»»

    Удалить апостроф ( )

    Так же можно данный код вызывать нажатием кнопки(Как создать кнопку для вызова макроса на листе) или поместить в надстройку(Как создать свою надстройку?), чтобы можно было вызывать из любого файла.

    И небольшое дополнение: старайтесь применять код вдумчиво. Не всегда возврат ошибки мешает. Например, при использовании ВПР иногда полезно видеть какие значения не были найдены.
    Так же хочу отметить, что применять надо к реально работающим формулам. Потому как если формула возвращает #ИМЯ!(#NAME!), то это означает, что в формуле неверно записан какой-то аргумент и это ошибка записи формулы, а не ошибка результата вычисления. Такие формулы лучше проанализировать и найти ошибку, чтобы избежать логических ошибок расчетов на листе.

    Статья помогла? Поделись ссылкой с друзьями!

    Поиск по меткам

    Поделитесь своим мнением

    Комментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме — добро пожаловать на Форум

    Ссылка на основную публикацию
    Adblock
    detector