Страницы: 1
RSS
Подстановка в формулы значений вместо ссылок
 
Добрый день!

В очередной раз поднимаем древнюю тему. Очень нуждаюсь в подстановке значений в формулы (напр. вместо =А1*А2+А3 хочу получить =1*2+3).
Данных постоянно обрабатываю много, поэтому вручную делать не вариант.

До сего дня использовал макрос на этом сайте, но столкнулся с проблемой округления чисел, вот пример:

ABC
10.01777.41877.418
2=0.017*24*187=76.296
В ячейке А1 находится число 0.01725, которое округлено до 3х знаков после запятой, в С1 ссылка на В1. В С2 макрос выводит значение 76.296, которое отличается от действительного более, чем на единицу, то есть при выполнении макроса эксель пересчитал формулу с округленным значением (0,017). При любом дальнейшем использовании значения из ячейки В1 получается довольно существенная  погрешность, которая будет только расти.

Значения округляются из-за команды ActiveWorkbook.PrecisionAsDisplayed = True, но без нее числа будут с очень большим кол-вом знаков после запятой.

Уже, наверное, прошло не меньше 15 лет с того времени, как народ начал просить возможность подстановки значений в формулы, неужели в Экселе до сих пор ничего не появилось?

Есть ли у вас идеи для решения или альтернативы, которые смогут помочь?

Спасибо.
 
Я так понимаю, что VBA для выполнения макроса создает отдельный лист, а потом результат копирует в исходный?
Можно ли сделать так, чтобы макрос рассчитывал с максимальной точностью (или с заданной), а выводил результат с "точностью, как на экране"?

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

Как сделать так, чтобы он после каждой замены заново пересчитывал весь лист, тогда погрешность должна быть незначительной?
Изменено: Rince - 01.04.2019 01:19:45
 
В примере нет макроса.
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
Rince написал:
Я так понимаю, что VBA для выполнения макроса создает отдельный лист, а потом результат копирует в исходный?
нет, не правильно Вы понимаете.
Excel Вам организовывает специально отведенное место (модуль) в котором Вы можете написать текст макроса, а затем и выполнить его
а вот создавать дополнительный лист, выгружать туда данные, а потом копировать результаты в исходный лист - все это делает макрос, если все это в нем предусмотрено
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх