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