У меня есть серия ячеек с очень простой формулой (например, G2=G4-G5), и я хочу, чтобы она оставалась неизменной, что бы я ни делал на листе, в частности, я хочу, чтобы она была устойчивой к вставке строки между строкой 4 и строка5.

Я перепробовал все комбинации знака доллара (например: G2=G4-$G$5), но безрезультатно.

Что я делаю неправильно?

Чтобы объяснить контекст: у меня есть следующее:

G2=G4-G5
G4=C17
G5=<number>

В определенный момент мне нужно:

  • Вставьте строку между Row4 и Row5
  • Скопируйте текущее значение в G4 в новый (пустой) G5
  • Убедитесь, что формула в G2 прежнему указывает на G4-G5 (конечно, она должна быть равна нулю сразу после этой операции)
  • Это справедливо для нескольких (не всех) столбцов.

После того, как я решу это, я попытаюсь автоматизировать эту процедуру, но теперь я нахожусь в тупике с первой строкой, ставшей G2=G4-G6 после вставки строки.

ОБНОВЛЕНИЕ: я действительно нашел способ сделать это, но это кажется излишним:

G2=INDIRECT(ADDRESS(ROW()+2, COLUMN()), 1) - INDIRECT(ADDRESS(ROW()+3, COLUMN()), 1)

Это действительно необходимо?

1 ответ1

0

Любой адрес ячейки будет соответствовать вставленным / удаленным строкам независимо от того, аннотировали ли вы их как абсолютные или относительные. Это поведение по замыслу. Метод, который вы указали в исходном редакторе вопроса, является одним из способов обойти этот процесс, но адреса ячеек не должны были быть разрешены функцией ADDRESS ; их можно так же легко записать в функцию INDIRECT как и текст.

Формула G2 выглядит следующим образом: =INDIRECT("G4")-INDIRECT("G5")

Другим вариантом является функция OFFSET которая жестко кодирует числа как смещения или ступенчатые от контрольной точки. Эти жестко запрограммированные целые числа не изменятся при вставке или удалении строки / столбца.

Формула G2: =OFFSET($G$1, 3, 0)-OFFSET($G$1, 4, 0)

И OFFSET и INDIRECT считаются энергозависимыми функциями. В этом контексте изменчивый означает, что формула (ы) будет пересчитываться для каждого цикла расчета, который испытывает рабочая книга, независимо от того, повлияет ли измененное значение на результат формулы или нет. Функции в энергозависимой категории не имеют большого значения для небольших таблиц или даже для больших таблиц, если расчет прост и число формул, включающих функцию, ограничено. Однако при достаточном количестве формул и зависимых формул на большом рабочем листе в какой-то момент отставание в расчете становится раздражающим. Вот энергонезависимое решение.

Формула G2: =INDEX(G:G, 4)-INDEX(G:G, 5)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .