O uso de INDIRECT()obras excelentes para preservar a posição absoluta das referências depois que os destinos foram copiados e colados, mas o problema é que ele também preserva a posição absoluta quando a fórmula é copiada, o que significa que você não pode estender facilmente uma fórmula para cobrir uma grande quantidade alcance ao usá-lo.
A solução é combinar INDIRECT()com ROW(), COLUMN()e ADDRESS()gerar programaticamente a posição da célula de destino com base na célula da fórmula.
No caso mais simples, como quando a célula de destino tem uma coluna fixa e sempre permanece na mesma linha que a fórmula, isso pode ser feito da seguinte maneira:
INDIRECT("A"&ROW())
Para introduzir deslocamentos dinâmicos da célula da fórmula, você pode usar ADDRESS():
INDIRECT(ADDRESS(ROW()-1,COL()-4))
Na captura de tela abaixo, as fórmulas no B1:E1foram estendidas para as 16 linhas abaixo e, em seguida, a sequência numérica A7:A10foi cortada e colada em 6 células. Como você pode ver, as fórmulas mais simples foram ajustadas e dessincronizadas automaticamente, enquanto o uso ingênuo de INDIRECT()não extrapolou corretamente todas as linhas, mas as duas fórmulas usadas INDIRECT()com a recuperação programática dos locais das linhas e das colunas foram capazes de manter suas referências:
