=INDIRECTO(E2) lee la celda cuya dirección está escrita como texto en E2. Si E2 dice C4, la fórmula devuelve el valor de C4. La dirección también se puede construir por partes: =INDIRECTO("C"&E3) lee la columna C en el número de fila de E3. INDIRECTO se llama INDIRECT en inglés, y la tabla muestra la fórmula en inglés; también acepta las fórmulas escritas en español, con punto y coma (o con comas, como en México).
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Address | Value | |
| 2 | Apple | Fruit | $1.20 | C4 | $0.80 | |
| 3 | Pear | Fruit | $1.50 | 6 | $1.10 | |
| 4 | Carrot | Vegetable | $0.80 | |||
| 5 | Bread | Bakery | $2.40 | |||
| 6 | Milk | Dairy | $1.10 |
=INDIRECTO(E2)F2 lee C4, el precio de Carrot, $0.80. Cambia E2 a C3 o B5 y F2 lo sigue. F3 une "C" y el 6 de E3 en la dirección C6 y devuelve $1.10. Cambia E3 a 2 para el precio de Apple.
Sintaxis de INDIRECTO
=INDIRECT(ref_text, [a1])
ref_text: un texto que escribe una referencia:"C4","B2:B6","Prices!A2","'Price list'!A2:B9".a1:VERDADEROu omitido para direcciones de estilo A1.FALSOlee el estilo R1C1, donde"R4C3"es la fila 4, columna 3, útil cuando la fila y la columna son números. En Excel en español este estilo se llama F1C1 y se escribe"F4C3".
Si el texto no es una dirección válida, el resultado es #¡REF! (#REF! en inglés; la tabla muestra los nombres de error en inglés). INDIRECTO devuelve una referencia real, así que funciona dentro de SUMA, CONTAR.SI, BUSCARV (SUM, COUNTIF y VLOOKUP en inglés) y cualquier función que reciba un rango.
Construir un rango a partir de números
La dirección puede ser un rango entero. Unirle un número da un rango cuyo tamaño viene de una celda.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Month | Sales | Rows | Total | ||
| 2 | Jan | 4,200 | 3 | 12,900 | ||
| 3 | Feb | 3,900 | ||||
| 4 | Mar | 4,800 | ||||
| 5 | Apr | 5,100 | ||||
| 6 | May | 4,600 | ||||
| 7 | Jun | 5,300 |
=SUMA(INDIRECTO("B2:B"&(1+E2)))Con 3 en E2 el texto pasa a ser B2:B4, y F2 suma de Jan a Mar: 12,900. Pon E2 en 6 para el semestre, 27,900. En Excel en español la fórmula de F2 es =SUMA(INDIRECTO("B2:B"&(1+E2))). El 1+E2 está ahí porque los datos empiezan en la fila 2. El mismo total se puede escribir sin INDIRECTO, con INDICE (INDEX en inglés), =SUMA(B2:INDICE(B2:B7;E2)), que no es volátil; la página de DESREF compara las opciones.
Hacer referencia a una hoja nombrada en una celda
El nombre de la hoja también puede salir de una celda. Así una sola fórmula de resumen se convierte en una búsqueda entre hojas: cada fila lee la hoja nombrada en la columna A. Las comillas simples alrededor del nombre hacen que funcione con nombres que tienen espacios.
| A | B | |
|---|---|---|
| 1 | Month | Total |
| 2 | Jan | 12,500 |
| 3 | Feb | 12,200 |
| 4 | Mar | 13,700 |
=SUMA(INDIRECTO("'"&A2&"'!B2:B4"))B2 construye el texto 'Jan'!B2:B4 y lo suma: 12,500. B3 y B4 son la misma fórmula copiada hacia abajo, así que leen Feb (12,200) y Mar (13,700). Abre la pestaña Feb y cambia un número: el resumen lo sigue. Escribe Feb encima de Jan en A2 y B2 pasa a sumar Feb. El B2:B4 dentro de las comillas es texto, así que no cambia al copiar la fórmula hacia abajo; solo cambia la referencia A2.
Listas desplegables dependientes
Una segunda lista desplegable cuyas opciones dependen de la primera es el trabajo clásico de INDIRECTO. En Excel la configuración habitual es:
- Pon las opciones de cada categoría en una columna y nombra cada rango como su categoría: selecciona las columnas con sus encabezados y usa Fórmulas > Crear desde la selección > Fila superior. Eso crea los nombres
Fruit,VegetableyDairy. - Dale a A2 una lista de las categorías: Datos > Validación de datos > Permitir: Lista, Origen
Fruit,Vegetable,Dairy(en Excel en español, separadas por punto y coma). - Dale a B2 una lista con el Origen
=INDIRECTO(A2). Cuando A2 dice Fruit, la lista lee el rango llamado Fruit.
La hoja de abajo construye lo mismo con una hoja por categoría en lugar de un rango con nombre. D2 usa INDIRECTO para desbordar las opciones de la hoja nombrada en A2, y la lista de B2 lee D2:D4.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Category | Item | Items for the category | |
| 2 | Fruit | Apple | Apple | |
| 3 | Pear | |||
| 4 | Plum |
=INDIRECTO("'"&A2&"'!A2:A4")Elige Dairy en A2: D2:D4 cambia a Milk, Butter, Cheese, y lo mismo las opciones de B2. B2 conserva su valor anterior hasta que eliges uno nuevo; Excel se comporta igual, y por eso los formularios suelen añadir una comprobación como =CONTAR.SI(D2:D4;B2)>0 junto al artículo. En Excel 365 puedes prescindir de los rangos con nombre y apuntar la segunda lista a una fórmula desbordada, por ejemplo =INDIRECTO("'"&A2&"'!A2:A4") en una celda auxiliar y =D2# como Origen. La página de la lista desplegable tiene el resto de la configuración.
INDIRECTO es volátil e ignora las filas insertadas
Dos efectos secundarios vienen de que INDIRECTO lea un texto en lugar de una referencia:
- Se recalcula con cada cambio. Excel no puede saber a qué celdas apuntará un texto, así que recalcula cada INDIRECTO después de cualquier edición en cualquier parte del libro. Unas docenas no hacen daño; decenas de miles hacen lenta cada pulsación. INDICE con un número de fila (
=INDICE(C:C;E3)) da el mismo resultado que=INDIRECTO("C"&E3)y solo se recalcula cuando cambian sus datos. - La dirección no se mueve. Inserta una fila encima de la fila 4 y
=C4pasa a ser=C5, pero=INDIRECTO("C4")sigue leyendo C4, que ahora es otra fila. A veces es justo lo que se busca, una referencia que debe quedarse en una celda fija pase lo que pase en la hoja. Más a menudo es un error esperando a que alguien inserte una fila.
INDIRECTO hacia otro libro solo funciona mientras ese libro está abierto; cerrado, devuelve #¡REF!.
Práctica: un precio a partir de un número de fila
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Row | Price | |
| 2 | Apple | Fruit | $1.20 | 5 | ||
| 3 | Pear | Fruit | $1.50 | |||
| 4 | Carrot | Vegetable | $0.80 | |||
| 5 | Bread | Bakery | $2.40 | |||
| 6 | Milk | Dairy | $1.10 |
Tu turno: En F2, usa INDIRECTO para devolver el precio de la columna C en el número de fila escrito en E2.
Preguntas frecuentes
¿Qué hace INDIRECTO en Excel?
Convierte un texto en una referencia. =INDIRECTO("C4") devuelve el valor de C4, y =INDIRECTO(E2) devuelve el valor de la celda cuya dirección esté escrita en E2. La dirección se puede construir con &, así que =INDIRECTO("C"&E2) lee la columna C en el número de fila de E2.
¿Cómo hago referencia a otra hoja cuyo nombre está en una celda?
Construye la dirección con el nombre de la hoja entre comillas simples: =INDIRECTO("'"&A2&"'!B2"). Las comillas hacen que funcione con nombres que tienen espacios. =SUMA(INDIRECTO("'"&A2&"'!B2:B4")) suma un rango de esa hoja.
¿Por qué INDIRECTO devuelve #¡REF!?
El texto no es una dirección válida, nombra una hoja que no existe o apunta a otro libro que está cerrado. Revisa el texto que construye la fórmula poniendo la misma expresión sola en una celda, sin INDIRECTO.
¿INDIRECTO es volátil?
Sí. Excel recalcula cada INDIRECTO con cualquier cambio en cualquier parte del libro, porque no puede saber de antemano a qué celdas apuntará el texto. Unas pocas no hacen daño; miles ralentizan el libro. INDICE puede hacer a menudo el mismo trabajo sin ser volátil.