Использование INDIRECT()
отлично подходит для сохранения абсолютной позиции ссылок после того, как цели были скопированы и вставлены, но проблема в том, что она также сохраняет абсолютную позицию при копировании формулы , что означает, что вы не можете легко расширить формулу, чтобы охватить большую диапазон при его использовании.
Решение состоит в том, чтобы объединить INDIRECT()
с ROW()
, COLUMN()
и ADDRESS()
программно генерировать положение целевой соты на основе ячейки в формуле.
В простейшем случае, например, когда целевая ячейка имеет фиксированный столбец и всегда остается в той же строке, что и формула, это можно сделать следующим образом:
INDIRECT("A"&ROW())
Чтобы ввести динамические смещения из ячейки формулы, вы можете использовать ADDRESS()
:
INDIRECT(ADDRESS(ROW()-1,COL()-4))
На скриншоте ниже формулы в B1:E1
были расширены до 16 строк ниже, а затем числовая последовательность A7:A10
была вырезана и вставлена на 6 ячеек вниз. Как вы можете видеть, простейшие формулы автоматически корректировались и десинхронизировались, в то время как простое использование INDIRECT()
не экстраполировало должным образом по всем строкам, но две формулы, которые используют INDIRECT()
наряду с программным извлечением местоположений строк и столбцов, смогли сохранить свои ссылки: