У меня настроена рабочая книга, где первая вкладка содержит список параметров. Каждый столбец представляет собой набор параметров для другого экземпляра.
Затем у меня есть шаблон для одного экземпляра, и пользователь делает много копий этого шаблона. Шаблон выполняет динамическое перетаскивание параметров с первого листа. Пользователь вводит номер столбца (от 1 до n), и этот столбец параметров извлекается из первого листа, который будет использоваться в этом экземпляре. Затем экземпляр выполняет вычисления сотен тысяч строк с использованием этих параметров.
Таблица параметров

Пример экземпляра

Моя проблема связана с волатильностью. При большом количестве экземпляров, если я использую смещение или косвенное значение для получения параметров, любое изменение в любой ячейке в рабочей книге приводит к повторному извлечению параметров на каждом листе экземпляра, и поэтому каждый лист каждый раз пересчитывается полностью, замораживать рабочую книгу примерно на 3 секунды при каждом изменении.
Я думал, что смогу уменьшить это, используя Index. Параметры каждого листа ссылаются на строку на первом листе, содержащую этот параметр, с номером столбца, из которого нужно извлечь данные, в качестве параметра индекса. Это решило проблему любого изменения, вызвавшего перерасчет. Теперь только изменения в диапазонах параметров вызывают перерасчет, но по какой-то причине все намного хуже.
Теперь изменение случайной ячейки в рабочей книге больше не приводит к зависанию всего объекта на 3 секунды во время пересчета, но изменение релевантной ячейки в диапазоне параметров приведет к пересчету каждого листа, и займет около 10 секунд. Почему этот метод намного медленнее. Технически он должен делать то же самое, что и раньше, только при изменении соответствующего параметра.
Есть ли способ настроить это так, чтобы при изменении параметра на первом листе только листы, на которые влияет этот параметр , пересчитывали?
* Решения 1032 *
Я рассмотрел комплексное решение, включающее VBA, после чего при копировании экземпляра шаблона отслеживается его ячейка «Номер экземпляра». Когда это изменилось, код VBA мог скопировать соответствующие параметры на лист и распечатать значения здесь. Мне также нужно, чтобы VBA отслеживал событие изменения на листе основных параметров. Когда что-либо изменяется, ему нужно будет проверить номер столбца, выполнить итерацию по всем шаблонам и повторно скопировать значения, если на этот номер экземпляра ссылаются. Я хочу избежать этого решения по обычным причинам, чтобы не допустить VBA в уравнение, но это может оказаться необходимым, если нет способа сделать Excel более умным при пересчете изменений параметров.