Использование однократных циклических ссылок в Excel - PullRequest
0 голосов
/ 06 мая 2020

Циркулярные ссылки в Excel включаются путем установки «Включить итеративный расчет» в «Параметры / Формулы». Значение «Максимальное количество итераций», равное 1, могло бы быть интересным выбором, но все еще есть проблемы.

В некоторые моменты мне хочется заменить неправильное значение в c ячейке CELL в COLUMN со значением =1-TOTALS, где TOTALS - это ячейка, содержащая результат нескольких листов, например =SUM(COLUMN).

Обычно у меня есть листы Excel (> 2013) в структуре, где все столбцы суммируют одно и то же количество, например, 1000 значений завершают 100% данными из разных наборов данных. Предположим, вы хотите придерживаться круговых ссылок, не меняя структуру книги, вызывая макрос или каждый раз вызывая Solver.

Я всегда заканчиваю вводить вручную, утомительно, многократно, правильное значение при CELL, когда это произойдет.

Проблема

Циркулярная ссылка добавляет константу к связанным ячейкам, и я не нахожу четкого способа «t ie "любое из значений данной постоянной ссылки (в этом случае, легко, окончательная сумма всегда должна быть 1). Если максимальная итерация равна 1, вычисление выполняется правильно, но при втором вычислении начинается дрейф.

Вопрос

Есть ли способ использовать Формула * Циркулярная ссылка в CELL, позволяющая Циркулярная ссылка существовать, позволяя Итерационные вычисления с Максимальное количество итераций из 1, и, что наиболее важно , каким-то образом фиксируя 100% результат в конце столбца, чтобы итерации не смещались ?.

1 Ответ

1 голос
/ 07 мая 2020

Вам не нужна круговая формула.

Я бы начал с создания Name: LAST_ROW и заполнил его соответствующим (вероятно, 1048576) числом для версии Excel, в которой этот рабочий лист было сделано.

И тогда вы можете просто использовать формулу. Например, для ячейки K10 это будет:

=1 - SUM(OFFSET(K10,1-ROW(),0,ROW()-1,1)) - SUM(OFFSET(K10, 1, 0, LAST_ROW-ROW(), 1))

Пояснение:

SUM(OFFSET(<this cell>,1-ROW(),0,ROW()-1,1)) дает сумму всего, что выше этой ячейки, SUM(OFFSET(<this cell>, 1, 0, LAST_ROW-ROW(), 1)) дает сумму все, что ниже этой ячейки.

...