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