Compte tenu de la liste des catégories et sous-catégories:
CatA SubCatA
CatA SubCatA
CatB SubCatB
CatB SubCatB
CatC SubCatC
CatC SubCatC
Je voudrais retourner toutes les catégories principales uniques basées sur la catégorie secondaire.
Je ne veux pas utiliser:
=QUERY(A1:B6,"SELECT A WHERE B = 'SubCatA'")
comme il retourne la liste avec les doublons (retourner le premier élément ne l'aidera pas non plus).
Ce que j'essaye c'est:
=QUERY(A1:B6,"SELECT A WHERE B = 'SubCatA' GROUP BY A")
mais cela me donne l'erreur: CANNOT_GROUP_WITHOUT_AGG
, par conséquent, j'essaie de trouver quelque chose d'équivalent à DISTINCT(A)
ou UNIQUE(A)
, mais ces fonctions n'existent pas.
Existe-t-il une fonction dans Langage de requête de l'API de visualisation Google équivalente à DISTINCT/UNIQUE pour renvoyer une liste de valeurs uniques?
Vous devez ajouter une colonne d'assistance dans la formule QUERY
, comme suit:
=QUERY(
{A1:B6, A1:A6},
"SELECT Col1, COUNT(Col3) WHERE Col2 = 'SubCatA' GROUP BY Col1 LABEL COUNT(Col3) ''"
)
Ajouter une autre formule QUERY
aidera à supprimer la colonne d'assistance:
=QUERY(
QUERY(
{A1:B6, A1:A6},
"SELECT Col1, COUNT(Col3) WHERE Col2 = 'SubCatA' GROUP BY Col1"
),
"SELECT Col1"
)
Sans une requête:
=unique(filter(A1:A6, B1:B6="SubCatA"))
En plus d'utiliser la fonction toujours utile UNIQUE autour de FILTER, comme le suggère user79865
, vous pouvez également utiliser UNIQUE autour de la fonction QUERY d'origine (qui peut être plus applicable et utile dans d'autres scénarios pour préserver les options et la flexibilité de QUERY quand FILTER ne suffit pas).
Comme si: =UNIQUE(QUERY(A1:B6,"SELECT A WHERE B = 'SubCatA'"))
Utilisez la fonction Unique(range)
.
Exemple:
=unique(query(Sheet2!A3:F2372,"SELECT C WHERE A contains '" &E1& "' AND B CONTAINS '" &E2& "' ",-1))
Cela fonctionnera sur la récupération d'une colonne. Vous pouvez utiliser cette technique pour explorer davantage votre tâche. C'est plus facile. A, B, C sont des colonnes de la feuille Sheet2 tandis que E1, E2 sont de la feuille de calcul courante entourée de &.
Solution sans fonctions d'aide/wrapper:
=QUERY(A1:B6,"SELECT MAX(A) WHERE B = 'SubCatA' GROUP BY A LABEL MAX(A) ''")
OP demande spécifiquement via Google QUERY , mais il existe un précédent selon lequel un autre A n'exige pas de QUERY et que l'OMI offre une meilleure solution (car plus complète et plus polyvalente): soit appliquer un tableau croisé dynamique:
Ceci (et l'autre As) constituerait une meilleure démonstration des solutions si l'échantillon de données était plus réaliste.