Comment lier une cellule de Google Spreadsheets à une cellule d'un autre document?

178

J'ai un tableur mensuel qui s'appuie sur les chiffres du mois précédent. J'aimerais importer ces valeurs de manière dynamique plutôt que de les copier / coller. Est-ce possible? Comment fait-on ça?

Jeff Yates
la source
En passant, je sais que c'est possible, comme je l'ai fait une fois, mais je ne peux plus trouver l'information ni la feuille dans laquelle je l'ai faite. Si je la trouve, je posterai une mise à jour.
Jeff Yates

Réponses:

183

IMPORTRANGE() semble être la fonction que vous voulez.

Dans la liste des fonctions des feuilles de calcul Google :

Google Spreadsheets vous permet de référencer un autre classeur dans la feuille de calcul que vous modifiez actuellement à l'aide de la fonction ImportRange. ImportRange vous permet d'extraire une ou plusieurs valeurs de cellule d'une feuille de calcul dans une autre. Pour créer vos propres formules ImportRange, entrez = importRange (clé de calcul, plage). Pour les langues dans lesquelles la virgule est utilisée pour la séparation décimale, utilisez un point-virgule au lieu d'une virgule pour séparer les arguments de votre formule.

Clé-feuille est une chaîne qui est la valeur de clé de l'URL de la feuille de calcul.

Plage est une chaîne représentant la plage de cellules que vous souhaitez importer, avec éventuellement le nom de la feuille (par défaut, première feuille). Vous pouvez également utiliser un nom de plage si vous préférez.

Étant donné que les deux arguments sont des chaînes, vous devez les inclure entre guillemets ou faire référence à des cellules contenant des valeurs de chaîne.

Par exemple:

= importrange ("abcd123abcd123", "sheet1! A1: C10") "abcd123abcd123" est la valeur de l'attribut "key =" sur l'URL du tableur cible et "sheet1! A1: C10" est la plage souhaitée. être importé.

= importrange (A1, B1) La cellule A1 contient la chaîne ABCD123ABCD123 et la cellule B1 contient le folio Sheet1! A1: C10

Remarque: pour utiliser ImportRange, vous devez avoir été ajouté en tant que visualiseur ou collaborateur à la feuille de calcul à partir de laquelle ImportRange extrait les données. Sinon, vous obtiendrez cette erreur: "#REF! Error: La clé de calcul, le titre de la feuille ou la plage de cellules demandée est introuvable."

"clé" est, bien sûr, la chaîne dans l'URL de la feuille de calcul qui correspond au key=paramètre.

Je viens de le tester en créant deux feuilles de calcul. Dans la cellule A1 de la première, j'ai mis une chaîne. Dans la cellule A1 de la seconde, je mets =importRange("tgR2P4UTz_KT0Lc270Ijb_A","A1")et il affiche la chaîne de la première feuille de calcul. (Votre clé sera évidemment différente.)

(Le format de la fonction peut dépendre de votre locale En France , la formule est non cumulable avec une virgule, vous aurez donc besoin de le remplacer par un point-virgule:. =importRange("tgR2P4UTz_KT0Lc270Ijb_A";"A1"))

REMARQUES:

  1. Google définit actuellement une limite stricte de 50 "formules de référence inter-classeurs" par feuille de calcul. Source: limites de taille de Google Documents, Feuilles et Diapositives . (h / t JJ Rohrer )

  2. La "nouvelle" feuille de calcul Google (bientôt la norme) supprime la limite de 50 formules de référence de classeur croisées ( Support Google ) (h / t Jacob Jan Tuinstra )

  3. Dans les "nouvelles" fiches Google, vous utilisez également l'URL complète comme clé ( support Google ) (h / t  Punchlinern ).

ale
la source
3
@ Al: Oui! C'est ça! Merci.
Jeff Yates
+1 Whoa! Je n'avais pas réalisé qu'il y avait une version en ligne. L'autre option consiste à utiliser les scripts Google Apps. Créez une fonction qui utilise SpreadsheetApp.openById ([ID]). GetRange () et définissez une plage locale avec cela.
Evan Plaice
3
Il est à noter que vous serez limité à 50 d'entre eux (par feuille de calcul?) (Limite stricte imposée par
JJ Rohrer,
4
Dans la nouvelle feuille de calcul Google (bientôt la norme), la limite de 50 a été supprimée: support.google.com/drive/answer/3093340?hl=fr
Jacob Jan Tuinstra
4
De plus, dans les nouvelles feuilles de calcul Google, vous utilisez l’ URL complète comme clé. De plus, vous êtes invité à accorder l'accès à la feuille demandée lorsque vous entrez pour la première fois dans la fonction.
Punchlinern
29

Pour votre information, si vous souhaitez référencer une autre feuille dans cette autre feuille de calcul, le nom de la feuille ne doit PAS être cité à nouveau:

utilisation

=importRange("tgR2P4UTz_KT0Lc270Ijb_A","Sheet Name!A1:A10")

au lieu de

=importRange("tgR2P4UTz_KT0Lc270Ijb_A","'Sheet Name'!A1:A10")

0blivieux
la source
6
Merci. Vous devriez ajouter ceci comme commentaire à une autre réponse ou même simplement éditer cette réponse.
studgeek
10

Dans la nouvelle interface, vous devriez simplement pouvoir taper =la cellule, puis aller simplement à l’autre feuille et choisir la cellule souhaitée. Si vous voulez le faire manuellement, ou utilisez l'ancienne interface, vous pouvez simplement faire =Sheet1!A1, où Sheet1est le nom de la feuille, et A1est la cellule sur cette feuille que vous aimez. Ceci est identique à Microsoft Excel.

Benjamin Pollack
la source
6
si le nom de la feuille comporte des espaces, utilisez 'This Other Sheet'! A1
akira
12
Qu'en est-il d'un document entièrement différent, comme je l'ai demandé dans la question?
Jeff Yates
@ Jeff Désolé; vous n'avez pas mentionné «document» dans le corps et, pour une raison quelconque, dans ma tête, j'ai pensé à «feuille». Autant que je sache, vous ne pouvez pas créer de lien dynamique vers un autre document . Mais vous pouvez utiliser plusieurs feuilles, plutôt que plusieurs documents. Vous pouvez alors appliquer ce que j'ai suggéré. C'est ainsi que je gère mes propres finances mensuelles, précisément pour cette raison.
Benjamin Pollack
C'est bon :) Je sais qu'il y a un moyen de le faire, comme je l'ai fait moi-même, mais j'ai oublié et je ne trouve pas la feuille dans laquelle je l'ai fait.
Jeff Yates
Cela ne répond pas à la question affichée - il s'agit d'autres feuilles dans le même document.
Brendan
4

J'ai trouvé cette syntaxe avec Insert -> Define new range

GAMME POUR RÉFÉRENCER UNE AUTRE ÉTAPE:

Toute une colonne: "Tableur avec des espaces dans le nom"! A: A

Toute la colonne B: "Tableur avec des espaces dans le nom"! B: B

etc.

Ensuite, vous pouvez l'utiliser comme:

=COUNTIF('First Page'!B:B, "valueToMatch")
Tom Roggero
la source
1
Est-ce également possible de faire des références en dehors du tableur?
Jacob Jan Tuinstra
@JacobJanTuinstra Que voulez-vous dire "en dehors" du tableur?
Tom Roggero
6
La IMPORTRANGEfonction peut importer des données d’ une autre feuille de calcul. La définition des plages est uniquement possible (possible) dans une feuille de calcul. C'est ce que je voulais dire par dehors.
Jacob Jan Tuinstra
Cela ne répond pas à la question affichée, mais indique simplement comment faire référence à une autre feuille du même document.
Brendan
@brendan utiliser IMPORTRANGEcomme dit Jacob.
Tom Roggero
2

voici comment je l'ai fait (réimplémenté 'importrange ()'):

  • ouvrez l'éditeur de script ("outils" -> "scripts" -> "éditeur de script")
  • fournissez une fonction comme celle-ci (sans aucun contrôle, ceci doit être amélioré mais vous avez une idée générale):
fonction REMOTEDATA (inKey, inRange) {

  var outData;  
  var ss = SpreadsheetApp.openById (inKey);

  si (ss) {
     outData = ss.getRange (inRange) .getValues ​​();
  }

  return outData;
}
  • Utilisez cette formule comme ceci dans votre feuille de calcul:
= SUM (REMOTEDATA ("key", "SheetName! A1: A10"))

"clé" est la clé du document, vous la trouverez dans le paramètre "clé = xyz" de l'URL du document.

La documentation relative aux ' services de tableurs ' fournit plus d'informations sur le sujet.

Akira
la source
4
Quel serait l'avantage de l'implémenter vous-même plutôt que d'utiliser la fonction existante?
Jeff Yates
1
@ Jeff Yates: aucun, je viens de le mettre en œuvre sans connaître importrange (). sportivité, vous savez? dans la manière de juste- parce-i-can :)
akira
1
Malheureusement, les fonctions personnalisées des feuilles de calcul ne peuvent plus ouvrir d'autres feuilles de calcul en utilisant SpreadsheetApp.openById()ou SpreadsheetApp.openByUrl()-> developers.google.com/apps-script/guides/sheets/…
Francesco Vadicamo
-2

Je l'ai fait très facilement en utilisant Query, par exemple, j'ai 2 feuilles ABC et XYZ et je veux importer une plage allant de A1 à C30 d'Abc à XYZ, cliquez sur la cellule où vous voulez que la plage apparaisse et écrivez ceci:

=QUERY(ABC!A1:C30)

Remarque: Si votre nom de feuille comporte des espaces, vous écrivez bien sûr ceci:

=QUERY('ABC 1'!A1:C30)

Qamar
la source
7
Le PO a demandé comment importer des cellules d'un autre document . Peut QUERYfaire ça?
Vidar S. Ramdal
4
@ VidarS.Ramdal C'est possible, mais il faut importrange("abcd123abcd123", "sheet1!A1:C10")par exemple =query(importrange("abcd123abcd123", "sheet1!A1:C10"));-)
Fuhrmanator