Страницы: 1
RSS
Разрыв цикличности вычислений через UDF
 
Всем привет!
Помогите, пожалуйста, справиться с задачкой, вытянуть которую самостоятельно у меня не получается - не хватает квалификации

Проблема:
Производимые excel рассчеты требуют цикличности вычислений. Например, в приложенном примере цикличность вызывают следующие рассчеты: размер выплачиваемых кредиторам процентов определяется как среднее между размером долга на начало текущего периода и размером долга на конец текущего периода; в свою очередь размер долга на конец текущего периода зависит от того, какую долю долга должник сможет погасить в текущем периоде, а так как размер тех средств, которые должник сможет направить на погашение тела долга зависит от выплачиваемых процентов, возникает цикличнотсь.

Решения по разрыву цикличности:
  1. Упростить порядок расчетов (например, в приложенно примере начислять проценты не на средний размер долга в начале и конце периода, а на его размер в начале периода). Не подходит, т.к. точность вычислений очень важна.
  2. Включить атоматические вычисления в настройках excel. Не подходит, т.к. делает вычисления очень нестабильными, а кроме того, ставит результат вычислений в зависимость от того, какие настройки excel (количество итераций, требуемая точность) стоят у отдельного пользователя.
  3. Разорвать цикличность вычислений через макрос, пример которого дан в приложенном файле. Данное решение решает все проблемы решения №2, но не годится, т.к. происходит слишком медленно и самое главное - конфликтует с установленным поверх excel сторонним софтом.
Необходимо:
В настоящее время наиболее перспективным решением проблемы видится написание формулы UDF, которая бы по сути повторяла функционал макроса (решения №3 выше) - заставляла приять значение каждой выделенной в строке 68 ячеки значение ячейки выше до тех пор, пока разница между суммой значений в строе 67 и строке 68 (значение ячейки D68 в приложенном примере) не будет равна нулю.
 
А каков бюджет? Пишите в личку или на мыло.
Изменено: Udik - 22.12.2016 14:51:38
Арфы - нет, возьмите бубен.
 
Дополнение к посту выше. Срок - пара дней. Бюджет - по договоренности (просьба писать в личку)
 
Вступили в переписку
Арфы - нет, возьмите бубен.
 
Update #2.
Существует еще одно решение проблемы, которое, скорее всего, не подойдет, - засунуть внутрь UDF создающую цикличность математику, зациклив все вычисления внутри формулы UDF.
Сомнения в данном решении связаны с тем, что в приложенном примере математика достаточно простая и ее легко засунуть внутрь UDF, зациклив вычисления внутри формулы (с этим у меня у самого проблем нет). Однако приложенный пример - искуственный в том смысле, что UDF нужна (а) для гораздо более сложных вычислений с гораздо более сложной создающей цикличность математикой и (б) для разрыва вычислений в сразу в нескольких местах. Соответственно: засовывание математики вычислений в UDF не позволит сделать универсальное решение проблемы, а кроме того, потребует делать сложные правки (о необходимости которых легко забыть) каждый раз, как меняется создающая цикличность математика.
 
Цитата
Udik написал:
Вступили в переписку
msm_passau, так вы договорились, или как?
 
Свободен заказ, я не смогу, не убирая циклических ссылок, заставить работать УДФ  :)
Изменено: Udik - 22.12.2016 19:03:44
Арфы - нет, возьмите бубен.
 
Udik, еще раз большое спасибо за попытку!
Проблема действительно сложная.
 
Ну если ни кого больше нет - попробуем...
Страницы: 1
Наверх