Cette question concerne la jointure de deux bases de données dans une feuille de calcul Google à l'aide de la fonction = QUERY
J'ai une table comme celle-ci dans la plage A1: C3
a d g
b e h
c f i
J'ai une autre table
c j m
a k n
b l o
Je veux que la table finale ressemble à ceci
a d g k n
b e h l o
c f i j m
Je peux le faire en utilisant une fonction vlookup assez facilement dans la cellule D1 et en le collant, mais mon ensemble de données est énorme. J'aurais besoin d'une page entière de vlookups et Google Spreadsheet indique que je suis à la limite de la complexité.
Je regarde la référence du langage de requête de Google ... il ne semble pas y avoir de type de "jointure" mentionné. Vous penseriez que ce serait une opération facile du type "rejoindre sur A".
Quelqu'un peut-il résoudre ce problème sans vlookup?
Google QUERY Language _ la version 0.7 (2016) n'inclut pas d'opérateur JOIN (LEFT JOIN), mais cela peut être obtenu à l'aide d'une formule matricielle dont le résultat pourrait être utilisé comme entrée pour la fonction QUERY ou pour d'autres utilisations .
Les formules de tableau et les fonctionnalités de gestion de tableaux de Google Sheets permettent de faire une jointure entre deux tableaux simples. Afin de faciliter la lecture, la formule proposée utilise des plages nommées au lieu de références de plages.
= ArrayFormula ( { Table1, Vlookup (ID, table2, COLUMN (Indirect ("R1C2: R1C" & COLUMNS (table2), 0)), 0) } .)
Remarques:
Indirect("R1C2:R1C"&COLUMNS(table2),0)
par un tableau de constantes allant de 2 au nombre de colonnes de table2. Voir cette feuille pour un exemple
En 2017, Google a amélioré l'article d'aide officiel en anglais sur QUERY, fonction QUERY . Il ne contient toujours pas encore de sujets comme celui-ci, mais il pourrait être utile de comprendre comment cela fonctionne.
Vous pouvez utiliser ARRAYFORMULA
ou VOUS pouvez simplement faire glisser cette formule: Après une importation ou QUERY
- dans la première table; dans la colonne D:
=QUERY(Sheet2!A1:C3, "Select B,C WHERE A='" & A1 & "'", 0)
Si vous pouvez mapper chaque "index" (a, b, c) sur une ligne ou une colonne spécifique, vous pouvez utiliser la fonction INDEX
.
Dans ce cas, vous pouvez probablement mapper "a" sur la colonne A (ou la ligne 1), "b" sur la colonne B (ou la ligne 2), etc.
En outre, Merge Tables semblent adresser ce cas d'utilisation exact.
Avec la table 'other' dans A5: C7, essayez:
=query({A1:C3,query(sort(A5:C7,1,TRUE),"Select Col2,Col3")})