Je souhaite obtenir la somme des heures qu'un employé, dont le nom figure dans la cellule D1, était absent en faisant référence à un tableau. La table est sur une feuille nommée Sep
. Le mot Sep
est une chaîne de caractères saisie en A97. Je suis capable d'accomplir la requête dans mon classeur, avec la formule:
=QUERY(indirect(concatenate($A97,"!A2:$F")), "Select sum(F) where A = '"&$D$1&"' label sum(F)'' ")
J'ai également vérifié que ma formule IMPORTRANGE fonctionnait. (Comme mon compte Stack Exchange est nouveau, cela ne me permet pas de mettre plus de deux liens dans cette publication. J'ai donc sorti le lien complet dans la formule ci-dessous, même si j'utilise correctement le lien complet dans ma formule actuelle. .):
=importrange("1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",concatenate($A97,"!A2:$F"))
Mais, quand j'essaie de tout mettre ensemble, j'ai l'erreur:
Erreur impossible d'analyser la chaîne de requête pour le paramètre Function QUERY 2: NO_COLUMN: F
C'est la formule que j'essaie d'utiliser:
=Query(importrange("https://docs.google.com/spreadsheets/d/1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",concatenate($A97,"!F2:$F300")), "Select sum(F) where A = '"&$D$1&"' label sum(F)'' ")
Voici un lien vers le Google Spreadsheets .
J'ai ajouté une feuille sur votre doc avec 3 variantes sur la façon dont vous pouvez obtenir les données que vous voulez ...
Pour obtenir uniquement la cellule par elle-même, vous devez supprimer la colonne "select" Col1 de la première formule et l'envelopper également dans l'index pour obtenir uniquement la ligne qui vous intéresse:
=index(Query(importrange("https://docs.google.com/spreadsheets/d/1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",$A97&"!A2:$F"), "Select sum(Col6) where (Col1='"&$D$1&"')"),2,)
Pour être super spécifique comme vous l'avez demandé dans votre question point par point dans la colonne D, vous pouvez le faire:
=Query(importrange("https://docs.google.com/spreadsheets/d/1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",$A97&"!A2:$F"), "Select Col1,sum(Col6) where (Col1='"&$D$1&"') group by Col1")
Si vous voulez réellement une petite table qui agrège toutes les données par nom unique avec des valeurs sommées, vous pouvez simplement utiliser un pivot ou un groupe dans une requête:
Pour grouper par:
=Query(importrange("https://docs.google.com/spreadsheets/d/1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",$A97&"!A2:$F"), "Select Col1,sum(Col6) where Col1<>''group by Col1",)
Pour pivot (mon préféré):
=Query(importrange("https://docs.google.com/spreadsheets/d/1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",$A97&"!A2:$F"), "Select sum(Col6) where Col1<>'' PIVOT Col1")
J'aime ajouter des en-têtes en haut et transposer la requête horizontalement afin qu'elle ressemble à ceci:
={"Employee","Hours";TRANSPOSE(Query(importrange("https://docs.google.com/spreadsheets/d/1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",$A97&"!A2:$F"), "Select sum(Col6) where Col1<>'' PIVOT Col1"))}