El uso INDIRECT()
funciona muy bien para preservar la posición absoluta de las referencias después de que los objetivos se hayan copiado y pegado, pero el problema es que también conserva la posición absoluta cuando se copia la fórmula , lo que significa que no puede extender fácilmente una fórmula para cubrir una gran rango al usarlo.
La solución es combinar INDIRECT()
con ROW()
, COLUMN()
y ADDRESS()
generar mediante programación la posición de la celda objetivo basada en la celda de la fórmula.
En el caso más simple, como cuando la celda objetivo tiene una columna fija y siempre permanece en la misma fila que la fórmula, esto se puede hacer de la siguiente manera:
INDIRECT("A"&ROW())
Para introducir desplazamientos dinámicos desde la celda de fórmula, puede usar ADDRESS()
:
INDIRECT(ADDRESS(ROW()-1,COL()-4))
En la siguiente captura de pantalla, las fórmulas en el B1:E1
se extendieron a las 16 filas debajo, y luego la secuencia numérica A7:A10
se cortó y pegó 6 celdas hacia abajo. Como puede ver, las fórmulas más simples se ajustaban y desincronizaban automáticamente, mientras que el uso ingenuo de INDIRECT()
no extrapolaba correctamente en todas las filas, pero las dos fórmulas que se usan INDIRECT()
junto con la recuperación programática de ubicaciones de filas y columnas pudieron mantener sus referencias: