Funció IMPORTRANGE en fulls de càlcul de Google

Español (Spanish) English

Aquest blog és una mica calaix de sastre de coses TIC i avui vull parlar de fulls de càlcul, que encara no he fet cap article parlant de fórmules. I concretament, d’una funció que tenen els fulls de càlcul de Google. La funció IMPORTRANGE.

Per mi, els fulls de càlcul són una de les eines bàsiques que un professor ha de dominar. I no tant per fer càlculs de notes, sinó per ordenar llistes, agrupar alumnes, posar en comú dades que es recullen…

I en aquest darrer aspecte, la funció IMPORTRANGE és molt útil i funciona molt bé. La idea és molt senzilla i el seu nom ho indica molt bé. Serveix per importar un rang de cel·les d’un llibre de càlcul a un altre llibre.

Fins fa un any, la funció estava limitada i donava errors tot sovint. Però actualment funciona bé i ràpid.

La nomenclatura és molt senzilla:

IMPORTRANGE(clau_de_full_de_càlcul;cadena_interval)
La clau del full de càlcul és senzilla de localitzar. En Google Drive, cada arxiu té un codi que l’identifica. Només cal obrir el document, en aquest cas un llibre de càlcul, i es localitza a l’adreça URL (després de /d/ i abans de /edit…):
importrange1
Un exemple seria el següent
IMPORTRANGE(“1DX_etZFib8YV1Ycvd-ZUoHzCJcth09MrmWONayiLsh8”;“‘Full 1’!A1:A8”)

En el nostre full de càlcul apareixerien els valors que hi hagués en el Full 1, rang A1:A8, del llibre que té per clau 1DX_etZFib8YV1Ycvd-ZUoHzCJcth09MrmWONayiLsh8.

Amb un gran avantatge, si en el full original canvien aquestes cel·les, en el full on estem inserint les cel·les també canvien automàticament.

A més, com en totes les fórmules de fulls de càlcul, es poden combinar. Així, podríem escriure la clau del full d’on volem importar en una cel·la (per exemple la B2) i en la fórmula, indicar la cel·la:

IMPORTRANGE(B2;“‘Full 1’!A1:A8”)

Així tenim més joc per canviar de full de càlcul.

Això sí, el primer cop que utilitzem aquesta funció ens demana permís. De fet, apareix l’error #REF, i en posar el ratolí a sobre, demana el permís:

Screenshot 2016-05-27 at 20.50.16

Si permetem l’accés, ja s’importa sense problemes.

Quines aplicacions té això en un centre? Jo ho utilitzo bàsicament en dos àmbits.

Amb alumnes: quan els alumnes realitzen tasques de recerca de dades (enquestes, mesures…), cada alumne pot anotar les dades en el seu propi llibre de càlcul. Com a professor tinc permís en tots els seus llibres i puc crear un nou llibre que recull les dades de tots. Dono permís de lectura a tots els alumnes i de forma ràpida i àgil tots poden veure les dades que han recollit els seus companys, però no poden modificar-les ni esborrar-les. Això sí, he hagut de copiar i enganxar totes les claus dels fulls de càlcul.

Amb professors: de forma molt similar a l’anterior, es poden compartir dades que els professors recullen.
A més, nosaltres també ho utilitzen molt per fer informes de projectes. Quan es treballa amb projectes, s’han d’avaluar molts aspectes. Alguns s’avaluen amb rúbriques, altres els corregeixen els professors, altres surten de l’observació… En el nostre cas, cada una acaba en un llibre de càlcul diferent. Per fer els informes finals, ens cal tenir-ho tot reunit en un sol llibre. I aquí entra la funció importrange. De forma senzilla, en un sol llibre recollim l’avaluació final de cada un dels aspectes.

De fet, pensant-hi una estona veig que se m’acudeixen alguns exemples més on utilitzem aquesta funció. Però que cadascú valori quin suc li pot treure 🙂

AMPLIACIÓ (juny 2017)

He anat rebent força consultes de com combinar la funció importrange amb altres funcions. Exposo aquí un exemple amb la funció vlookup.

En el següent llibre (origen), es pot veure una mini base de dades amb productes: A, B, C i D.

Suposem que en un altre llibre (destí) volem capturar alguna d’aquestes dades, segons alguna cel·la. O sigui, que en un altre puguem indicar un article (exemple B) i automàticament ens apareguin el preu i el color.

Quina fórmula hem de posar en la cel·la C2? I en la D2?

La fórmula en C2 seria la següent:

=VLOOKUP(A2;IMPORTRANGE(“https://docs.google.com/spreadsheets/d/1w6lOFDFS3NjwxmagMA57RR6GOY_k0Fz85Cum_krkrmg/”;“‘Full 1’!A1:C6”);2;FALSE)

La fórmula en D2 seria la següent:

=VLOOKUP(A2;IMPORTRANGE(“https://docs.google.com/spreadsheets/d/1w6lOFDFS3NjwxmagMA57RR6GOY_k0Fz85Cum_krkrmg/”;“‘Full 1’!A1:C6”);3;FALSE)

O sigui, que la funció vlookup busca les dades a partir de la funció importrange. Però compte que hi ha un problema!

Quan s’utilitza la funció importrange sola, apareix el missatge d’error per manca de permisos i la possibilitat de connectar els full per solucionar-lo.

Screenshot 2016-05-27 at 20.50.16

Quan la funció importrange s’utilitza en combinació amb altres, apareix l’error, però ni la possibilitat de connectar els fulls. En desconec el motiu, però sí la solució.

Simplement, cal utilitzar primer la funció importrange sola, donar permís, i després usar-la combinada. En l’exemple que posava, caldria primer, en alguna part del llibre destí, indicar la següent fórmula:

=IMPORTRANGE(“https://docs.google.com/spreadsheets/d/1w6lOFDFS3NjwxmagMA57RR6GOY_k0Fz85Cum_krkrmg/”;“‘Full 1’!A1:C6”)

Quan aparegui l’error, connectar els fulls permeten l’accés.

Ara ja estan els fulls connectats, així que les fórmules de les cel·les C2 i D2 ja funcionen correctament. La fórmula que hem posat amb l’importrange sola, si volem, ja la podem esborrar.

Español (Spanish) English

31 thoughts on “Funció IMPORTRANGE en fulls de càlcul de Google

  1. Hola, desearía saber cómo escribes la fórmula en el nuevo libro que recoge los datos de todos los alumnos
    Si cada alumno tiene su propio libro de excel, en el que se van entrando los datos mediante un formulario, el rango debería ser dinámico o infinito, no estático. Entonces cómo se especifica este tipo de rango en la fómula IMPORTRANGE ??

    1. Hola Ruth,
      puedes usar un rango “infinito” de la siguiente manera:
      IMPORTRANGE(B2;“‘Hoja 1’!A:A”)

      Así te importará todos los datos que el alumno tenga en la columna A. Si sólo tiene tres filas, importará tres filas. Pero si rellena también la cuarta, también la importará sin tener que cambiar la fórmula.

  2. Hola, tengo una pregunta

    Como hago para que una hoja no me pida permito para utilizar la formula? Existe alguna manera?
    Me facilitaría mucho las cosas

    Gracias

  3. Hola, hasta ahora funcionaba bien, pero al hacer una nueva hoja no me pide de nuevo permitir el acceso, así que no me importa el rango. ¿Hay alguna manera de forzar que me pida permiso? He cerrado el archivo, drive y el navegador, borrado cookies… No sé qué puede ser. Gracias,

    1. Supongo que debes tener algun error en el código de la hoja o en la sintaxi de la fórmula. Yo no he tenido nunca ningún problema si todo está correcto.

  4. Buenas tardes Jaume,

    Al crear las fórmulas “recoge” la información perfectamente, sin embargo, cuando cambio datos de las hojas origen, no se como actualizarlo para que ese cambio se refleje en la hoja con los IMPORTRANGE.
    De forma análoga al “Actualizar Vinculos” de Excel, ¿existe alguna utilidad que realice esa función?.

    Gracias, saludos.

    1. Hola,

      la función IMPORTRANGE refleja los cambios al momento. No es que copie los datos, sino que muestra los datos que hay en la otra hoja. Así que si cambias un valor en el libro de origen, automáticamente se cambia en la hoja donde utilizas IMPORTRANGE

      1. Sip, entiendo que no es una copia como tal, sino más bien un vinculo. He estado realizando varias pruebas, y he visto que los datos de unas hojas los cambia prácticamente al momento, mientras que para actualizar los datos de otras hojas se tira varios minutos, muchos minutos, y eso que mantengo el mismo formato de datos, de fórmula…
        ¿Sabes a que puede ser debido?, ¿Influye que unas hojas estén ubicadas en Mi Unidad de Drive, mientras que haya otras que estén en “Compartido Conmigo”?.

        Gracias de nuevo.

        1. Pues la verdad es que no. A mi me funciona siempre bién, pero todas las hojas las tengo en carpetas ubicadas en mi unidad. Haré pruebas a ver si eso influye

  5. Buenos días Jaume,

    Disculpa, otra pregunta. Para no tener que escribir la fórmula en cada fila, ¿sabes si existe una forma de “estirar” la formula, y que el valor de la fila del intervalo se actualice automáticamente, de la misma forma que sucede con la variable clave_hojacalculo?.

    Como me da la impresión que no me he explicado correctamente, te comento: tengo una matriz de datos con unas 1000 filas, y 20 columnas, en la que cada celda tiene un enlace importrange, que busca datos en otras hojas con la misma matriz. Si creo las formulas de la fila 1, y proyecto dichas fórmulas hasta la fila 100, el valor de fila de la variable clave_hojacalculo se actualiza, sin embargo, la variable cadena_intervalo no cambia, supongo que porque está entrecomillada, ¿existe alguna forma que el valor de la fila del intervalo también se actualice?, porque sino veo que tendré que hacer una tanda de fórmulas por cada fila, lo cual me parece una locura, la verdad.

    Gracias, saludos.

    1. Entiendo lo que quires realizar pero se exactamente como son las hojas. En todo caso, un par de opciones.
      Si los datos los recoges de una misma hoja, puedes recoger un rango en lugar de sólo una celda.
      Importrange permite algo como lo siguinte:
      =importrange(“e2121wqd213u821ws”;”Datos!B2:B1000″)
      Con esto, trapasas 999 celdas de golpe con una sola fórmula.

      La otra opción, és usar una fórmula dentro de Importrange. Algo como lo siguiente:
      =importrange(“e2121wqd213u821ws”;”Datos!B” & row(B2))

      En este caso, al “estirar” la celda B2 i va a cambiar. Así que, de hecho, es como si en la primera celda hubieras introducido la fórmula
      =importrange(“e2121wqd213u821ws”;”Datos!B2″)
      en la siguiente
      =importrange(“e2121wqd213u821ws”;”Datos!B3″)
      y así hasta el final.

      A ver si

      1. Buenas tardes Jaume,

        Los datos no los recojo de una sola hoja, sino de varias, y el uso del rango me viene perfecto, pues tanto los rangos de las hojas origen, como los de las hojas destino, coinciden.
        En un primer momento había entendido mal el funcionamiento de la función, asimilaba el uso del rango a tener que replicar la formula en cada celda, algo parecido a un buscarv/buscarh, no creía con una sola fórmula fuese capaz de volcar todo el rango de forma simultánea.
        Por otro lado, la segunda opción también me ha parecido muy interesante, y la he probado para tenerla en cuenta de cara a otras casuísticas futuras que se me puedan plantear.
        A éste respecto, también he intentado jugar con la variación de la columna, algo así:

        =importrange(“e2121wqd213u821ws”;”Datos!” & columna(B2) & fila(B2))

        De forma que se pudiese extender la fórmula tanto hacía la derecha, como hacía abajo, sin embargo, da error en el intervalo, ¿lo ves factible, o es rizar demasiado el rizo?.

        Sea como fuere, muchas gracias por la respuesta anterior, la verdad es que me ha sido de grandísisisima ayuda 🙂

        Saludos,

        1. Perfecto Juan Carlos.
          Y ningún problema en rizar el rizo. Te ponía el ejemplo con la fila pero puedes añadir la columna o la fórmula que necesites. A mi siempre me ha funciondo muy bien.

  6. Buenas tardes, tengo un problema con importrange, cuando adiciono una celda nueva sobre loos datos que estoy llamando en la hoja original (de donde esto importando los datos) se me corre una celda hacia abajo en la hoja de destino? como puedo solucionar este inconveniente.

  7. Buenas Tardes Jaume,

    Quisiera Combinar, la Formula IMPORTRANGE con BUSCARV (VLOOKUP), pero me genera error de coincidencia de Datos o Fallas con la Hoja de Origen , que Pasa; quiero que según la Información que tengo en una Celda , me traiga la Información correspondiente de la Fila en el Rango que yo escoja, es decir tengo una Base de datos. Según el Nombre de Producto que tengo me arrastre la información cómo Precios, Descripción , Cantidades en stock , Pero me Genera error, pues básicamente no sé cómo combinar estas dos fórmulas, te agradezco Puedas Ayudarme.

    Gracias

      1. Hola Jaume,

        Muchas Gracias , Por La información, fue de mucha Ayuda.

        Efectivamente, ese es el uso que quería darle a Ambas funciones, sin Embargo al aplicar las variables a mis hojas de Cálculo, me genera error: “Error VLOOKUP evalúa como un intervalo fuera de los límites” y no sé que pase, si necesito un Permiso Adicional, un Complemento, entre Otros, no le encuentro el Problema, quisiera me Orientaras, si esto suele Pasar o algo estoy haciendo Mal.

        Muchas Gracias (una vez Más)

        1. No se necesita nada especial. Sólo seguir los pasos que he indicado. Muy importante primero utilizar la función importrange sola, dar permiso, y después combinarla.

  8. Hola, Jaume,

    Molt interessant aquesta funció, justament estava elaborant un full de càlcul en què necessito usar el contingut de cel·les d’altres llibres. He intentat usar la funció però no em surt cap valor, o el valor que em surt no és el que hi ha a l’altre full…
    Si es necessita posar el valor de només una cel·la, és possible? Enlloc de posar el rang de columna, es pot posar de files (per exemple, de A1 a J1?).

    Gràcies!

  9. Una segona pregunta! Si faig una plantilla en què uso aquesta funció, i aleshores la gent en fa còpies, funcionarà correctament o es “desvincularà”, perquè no entenc com funciona al tractar-se de dos documents que van com “units”… O és millor que ja faci tots els documents que m’interessen amb el títol de cada llibre?

    Gràcies de nou!

    1. En fer còpies funcionarà, però caldrà obrir cada full i tornar a donar permís. I caldrà que l’usuari tingui permís de lectura del llibre origen.

      1. Ara he fet les còpies, però és clar, m’agafa les dades de l’original, no de les còpies noves. Suposo que haig de canviar manualment el codi que identifica les còpies dels fulls de càlcul, oi?

  10. Hola Jaume, genial!

    Soy Jonatan, co fundador de Sheetgo, una startup que trabaja exclusivamente con la administración de datos en hojas de calculos Google Sheets. Sheetgo consigues hacer un trabajo igual a de la formula IMPORTRANTE pero con um poco a más de funciones. Si tu utilizas mucho esta formula, vale la pena saberlo: https://www.sheetgo.com

    Un saludo!

  11. Buen dia, tengo la misma duda de Juan:
    Buenas tardes, tengo un problema con importrange, cuando adiciono una celda nueva sobre loos datos que estoy llamando en la hoja original (de donde esto importando los datos) se me corre una celda hacia abajo en la hoja de destino? como puedo solucionar este inconveniente.

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir els comentaris brossa. Apreneu com es processen les dades dels comentaris.