La función INDIRECTO en Excel

La función INDIRECTO en Excel nos ayuda a obtener una referencia a una celda o a un rango de celdas. Puedes utilizar esta función para crear una referencia que no cambiará aun cuando se inserten filas o columnas a la hoja de Excel.

La función INDIRECTO también puede ser utilizada para crear una referencia a partir de una letra y un número dando forma a la dirección de la celda de la cual deseamos obtener la referencia.

Sintaxis de la función INDIRECTO

La función INDIRECTO tiene dos argumentos.

Sintaxis de la función INDIRECTO en Excel

  • Ref (obligatorio): Es la referencia especificada como una cadena de texto.
  • A1 (opcional): Valor lógico que indica el tipo de referencia especificada: A1 (verdadero) o F1C1 (falso).

En caso de omitir el argumento A1, la función INDIRECTO supondrá que la referencia es de tipo A1.

Bloquear referencia a una celda

En el siguiente ejemplo puedes observar en la celda C1 la fórmula =A5 y en la celda C2 la fórmula =INDIRECTO(“A5″).

La función INDIRECTO en Excel 2010

Ambas celdas muestran el valor de la celda A5, pero ahora observa lo que sucede al insertar una nueva fila por arriba de la fila 5.

Ejemplo de la función INDIRECTO en Excel

El valor 500 ahora se encuentra en la celda A6 y Excel actualizó automáticamente la fórmula de la celda C1 que ahora es =A6. Sin embargo, la celda C2 muestra el valor 0 (cero) porque la función INDIRECTO sigue regresando la referencia a la celda A5 que ahora está vacía.

Si necesitas hacer referencia siempre a la misma celda sin importar que se inserten o eliminen filas o columnas, entonces la función INDIRECTO será adecuada para dicho propósito.

Crear una referencia a partir de texto

Es posible hacer una referencia con la función INDIRECTO utilizando los valores contenidos en  otras celdas. En el siguiente ejemplo, la celda B1 indica la columna y la celda B2 indica la fila que formarán la dirección de la celda a la que haremos referencia. La función INDIRECTO une ambos valores y regresa el valor de la celda D7:

Crear una referencia con la función INDIRECTO

Sería suficiente con especificar la letra E en la celda B1 para que la función INDIRECTO muestre el valor 608 el cual pertenece a la celda E7.

Ya que el argumento de la función INDIRECTO es de tipo texto podemos formar la dirección de una celda combinando texto y el valor de alguna otra celda. Por ejemplo, podemos modificar la fórmula anterior para fijar la columna C y tomar el valor de la fila especificado en la celda B2:

=INDIRECTO("C" & B2)

Observa el resultado de utilizar la función INDIRECTO de esta manera:

Referencia a partir de texto

Crear una referencia a otra hoja

Ya que hemos observado que podemos concatenar diferentes valores para formar el argumento de la función INDIRECTO hagamos un último ejemplo para construir referencias a celdas que se encuentran en otra hoja. Primero observa los valores que tengo en las Hoja2 y Hoja3 de mi libro de Excel:

Datos en otras hojas de Excel

En la Hoja1 he armado una tabla con los encabezados Hoja, Columna y Fila que me ayudarán a especificar el valor de la celda que deseo obtener. Observa con atención cómo se arma la cadena de texto dentro de la función INDIRECTO:

Referencia a otras hojas con la función INDIRECTO

En esta tabla, la función INDIRECTO de la celda D5 es equivalente a tener =INDIRECTO(“Hoja3!C4″) solo que hemos formado el argumento concatenando los valores ubicados en otras celdas.

Artículos relacionados
 Listas dependientes con la función INDIRECTO
Convertir una lista en tabla

26 pensamientos en “La función INDIRECTO en Excel

  1. Benjamin

    Hola antes que nada agradecerte por los excelente tutoriales que haces mi duda es actualmente estoy trabajando con con un control de formulario que me lleva a la Hoja1, Hoja2 y Hoja3 … etc , en estas hojas hay tablas de la misma proporción 20×20 y situadas en los mismos rangos D9:H13 para no moverme entre hojas utilizo el control de formulario y en un rango la formula =INDIRECTO(“Hoja”&$C$1&”!D1″) , El problema es que al yo tener seleccionado el rango donde incluir la formula al dar ctrl+shif+enter el rango se rellena con un solo dato D9 en todo el rango y no con cada uno de los datos de cada una de las celdas de las otras hojas … Gracias por tomarte tu tiempo saludos

    Responder
    1. Moisés Ortíz Autor

      Hola Benjamin, por lo que entiendo, deseas copiar siempre el rango D9:H13 dependiendo la hoja especificada en la celda C1. Si es así, debes usar la siguiente fórmula:
      =INDIRECTO(“Hoja” & $C$1 & “!D9:H13″)

      Por supuesto que primero seleccionas todo el rango de 20×20, introduces esta fórmula y finalmente pulsas Ctrl + Shift + Enter.

      Responder
      1. Benjamin

        Ok gracias ya vi mi error, Muy amable Moises

        Responder
  2. miguel Campusano

    Buenas Noches:
    yo tengo un problemita que para mi esta bastante complicado y trata sobre lo siguiente, resulta que tengo un listado de actividades y cada una de estas actividades tienen sus recursos, los cuales estos recursos están representados en cada una de estas hojas, es decir me explico quiero combinar un buscarv que al momento de que tengo un #N/A me salga 0, esto esta funcionando, pero ademas quiero que me escoja el nombre de la hoja en donde están dichos recursos lo haga de forma automática y quiero combinar esto dentro con un indirecto ejemplo:

    =SI(ESNOD(BUSCARV(N$5,’10101′!$A$4:$K$84,11,FALSO)),0,(BUSCARV(N$5,’10101′!$A$4:$K$84,11,FALSO)))

    dentro de esta formula no se como poner la función INDIRECTO para cambiar el nombre 10101 por la celda A14 por ejemplo ya que en esa celda estará el numero 10101, espero me hayan entendido

    Responder
    1. Moisés Ortíz Autor

      Hola Miguel, utiliza la función INDIRECTO dentro de BUSCARV de la siguiente manera:
      BUSCARV(N$5,INDIRECTO(A14 & “!$A$4:$K$84″),11,FALSO)

      Responder
  3. Antonio

    Estoy intentado utilizar esta función para acceder a celdas de otro libro al que me encuentro y me da error de referencia, ¿sabes si existe alguna restricción en este sentido?

    Responder
    1. Moisés Ortíz Autor

      Hola Antonio, no hay ninguna restricción de la función INDIRECTO para hacer referencias a otros libros. Solo recuerda que el libro al que estás haciendo referencia debe estar abierto o de lo contrario obtendras un error #¡REF!.

      Responder
  4. Jorge Ocaña

    Muy buenas noches Moises
    Antes que nada agradecerte por la gran ayuda que resutas ser para gente que esta empezando con el excel.
    Pues bien, mi asunto es el siguiente: tengo un libro con la hojas resumen, lunes martes miercoles jueves viernes sabado y domingo, ahora en la hoja resumen tengo en la celdas D3 al J3 las fechas de la semana.
    mi consulta es como puedo usar la funcion indirecto tomando el dia de la semana de estas celdas y obtener con esto datos de las hojas de cada dia?
    trate de usar la siguiente expresion pero me da error: =INDIRECTO(TEXTO(D2;”DDDD”)&”!$al$15″)
    Gracias

    Responder
    1. Moisés Ortíz Autor

      Hola Jorge, tu fórmula está correcta y devuelve la celda AL15 de la hoja cuyo nombre es el día de la semana de la fecha en D2.

      Responder
  5. Omar

    Hola Moisés, buen día, primeramente quiero agradecerte por la gran ayuda que has sido, con tus explicaciones claras.
    Mi problema es que tengo una lista de nombres en la hoja 2 que ocupan las siguientes celdas =Hoja2!B5:B62 con un valor asignado en las celdas =Hoja2!C5:C62 y coloqué en la hoja 1 una lista desplegable con los nombres, pero quisiera que en la celda siguiente me aparezca automáticamente el número asignado, intenté hacerlo con una lista desplegable y la función indiecto, el valor me aparece pero en forma de lista desplegable y yo quisiera que solamente aparezca el valor, de antemano gracias y saludos.

    Responder
    1. Moisés Ortíz Autor

      Hola Omar, ¿Cuál es la fórmula que estás utilizando en la “celda siguiente”?

      Responder
  6. Juan

    Una vez que aplico la funcion INDIRECTO en la formula y quiero arrastrar la formula en las filas de abajo, no variabiliza el rango.
    =CONTAR.SI(INDIRECTO(“‘[Fixture 2013.xlsx]“&$B$2&”‘!$E33:$AI33″);”F”)
    La formula toma un rango situado en otro archivo.
    Cuando trato de llevarlo al E34:Al34 E35:Al35 E36:Al36.. etc. copia fijo el E33:Al33. Como hago para variabilizarlo?

    Responder
    1. Moisés Ortíz Autor

      Hola Juan, remueve el símbolo $ que es el que hace que una referencia sea absoluta (en lugar de relativa).

      Responder
  7. Gustavo Barreda

    Estimado Moises,

    Inicar agradeciendo el tiempo brindado, mi consulta es, estoy usando INDIRECTO y referencio otra hoja como sigue: =INDIRECTO(“Hoja3!C” & (VALOR(DERECHA(CELDA(“nombrearchivo”),2))+3)), cuando cambio de hoja y hago modificaciones, regreso donde use INDIRECTO encuentro que los valores están en #¡VALOR! , voy a la línea de edición de la fórmula, sólo pongo enter y regresa el valor. Que debo hacer para que el valor se muestre todo el tiempo correctamente?
    Gracias

    Responder
    1. Gustavo Barreda

      Con F9 logro regresar el valor, pero siempre tendré que presionar F9, ojo está en opciones de cálculo automático.
      Saludos

      Responder
      1. Moisés Ortíz Autor

        Hola Gustavo, el error #¡VALOR! generalmente se presenta cuando proporcionamos un argumento de un tipo diferente al que espera una función. En tu caso, es muy probable que esto suceda por el uso de la función VALOR.

        Responder
  8. David

    Buena tarde
    =INDIRECTO(“REFERENCIAS!$D$12″) tengo esta formula para que copie de una celda a otra el dato que tengo, pero al arrastrar la celda de la formula me aparece siempre D12 y quiero que cambie a D13 asi consecutivamente.
    Gracias

    Responder
    1. Moisés Ortíz Autor

      Hola David, eso no es posible porque estamos hablando de un texto y por lo tanto Excel no puede aplicar el Autorellenar. La única opción que tienes es utilizar una columna auxiliar donde deberás colocar la referencia “REFERENCIAS!D12″ y copiarla hacia abajo y posteriormente utilizar las celdas de dicha columna como el argumento de la función INDIRECTO.

      Responder
  9. Sandra

    se pueden utilizar las funciones Coincidir – Direccion y Indirecto sobre una tabla dinámica.
    las utilizo en tablas fijas; pero una vez que requiero utilizarlas en una tabladinámica, solo me entrega el resultado 0 y no el nro de la celda que está en referencia.

    gracias por la ayuda

    Responder
    1. Moisés Ortíz Autor

      Hola Sandra, si se pueden utilizar las funciones que mencionas, pero debes tomar en cuenta que, al ser una tabla dinámica, algunas celdas pueden quedar vacías al aplicar un filtro.

      Responder
  10. MICHAEL DUARTE

    Buenas tardes

    Moises de ante mano agradecerlo por todos los aportes realizados ya que han sido de gran ayuda , pero tengo una consulta no se si me pueda colaborar :

    Estoy intentando utilizar la formula =INDIRECTO(A2&”!”&B2&C2) , para que me traiga la información de varias hojas , el problema es que me aparece #¡REF! , debido a que el nombre de las hojas tienen espacio, me explico el nombre de las hojas están así : Page 1 , Page 2 , Page 3 , al momento de quitarle los espacios dejandolo asi : Page1 , me trae la información , pero para mi es muy dispendioso ya que son mas de 200 registros y esto lo debo hacer en varios archivos .

    Responder
    1. Moisés Ortíz Autor

      Hola Michael, eso se resuelve colocando una comilla simple alrededor del nomber de la hoja de manera que la función INDIRECTO reciba algo como: ‘Page 1′!A1. Puedes modificar tu fórmula de la siguiente manera:
      =INDIRECTO(“‘”&A2& “‘”&”!”&B2&C2)

      Para saber un poco más sobre referencias de celdas a otras hojas te recomiendo leer el siguiente artículo:
      http://exceltotal.com/hacer-referencia-a-celdas-de-otras-hojas-en-excel/

      Responder
  11. Anibal Avalos

    Saludos y unas inmensas felicitaciones por tus tutoriales lo que nos permite ir aprendiendo más secretos del mundo del Excel. Ojala me puedas ayudar. Mi problema es el siguiente:
    Tengo esta formula: =COINCIDIR(B5;agosto!A7:CT7;1) en donde b5 es el día del mes a buscar en la hoja Agosto, etc. Pero necesito que el nombre de la hoja es decir Agosto coja directamente de la celda B4 y mantenga el mismo rango. He puesto la siguiente formula pero no funciona : =COINCIDIR(B5;INDIRECTO(“b4″&”!A7:CT7″);1)
    Alguna idea como hacer la formula correcta. Gracias infinitas por la ayuda.

    Responder
    1. Moisés Ortíz Autor

      Hola Anibal, empezaría por preguntar si te funciona la fórmula =COINCIDIR(B5;agosto!A7:CT7;1).
      Cuando intentamos utilizar la función COINCIDIR sobre un rango con más de una columna obtenemos el error #N/A.

      Responder
  12. Dido

    Hola Moisés,tengo un problema con la fórmula.Tengo varias hojas. Quiero llamar a una hoja resumen y el resto de hojas tienen que tener un numero de albarán (00302,00303etc…). La fórmula que estoy utilizando en la hoja 1 es: =INDIRECTO(“Hoja”&FILA(A2)&”!”&”C$20″). Me coge bien los datos pero en cuanto intento renombrar las hojas me da error. Me puedes ayudar por favor???Gracias!

    Responder
    1. Moisés Ortíz Autor

      Hola Dido, la función FILA(A2) siempre devolverá el número 2, así que no me queda muy claro porqué lo utilizas así ya que SIEMPRE estarás haciendo referencia a la Hoja2.
      Si vas a nombrar las hojas con el número de albarán sería suficiente con indicar dicho nombre dentro de la fórmula:
      =INDIRECTO(“00302!”&”C$20″)

      Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>