web-dev-qa-db-fra.com

Référencez dynamiquement les données de plusieurs onglets et triez-les

J'ai une feuille de calcul avec plusieurs onglets de données. Les données contiennent 2 colonnes, A = Catégories, B = Quantité.

J'ai créé une copie de la feuille de calcul ICI (veuillez utiliser fichier> copier) si vous souhaitez avoir une copie du fichier à modifier.

Je veux référencer toutes les données dans une "feuille principale", puis les trier. Mais je veux que les données soient référencées par exemple. s'il change dans l'onglet d'origine, la "feuille principale" devrait également être mise à jour.

Actuellement, j'ai essayé de le faire de 3 façons:

Option 1.
Référencez toutes les données dans l'onglet maître à l'aide de =Sheetname!B2 et répéter pour chaque feuille. Cela fonctionne pour afficher toutes les données sur une seule page, mais une fois que les données sont dedans, cela ne me permet pas de les trier.

Option 2.
Référencez toutes les données dans l'onglet maître à l'aide de =Sheetname!B2 et répéter pour chaque feuille. Ensuite, créez un tableau croisé dynamique à partir de l'onglet principal, cela fonctionne et me permet de trier, mais ne trie que la quantité dans chaque catégorie. Pas comme une liste complète.

Option 3.
La seule façon pour que cela fonctionne jusqu'à présent est de faire l'option 1, puis de copier les données et de les coller en tant que valeurs. Cela fonctionne, mais n'est plus référencé dynamiquement.

Existe-t-il un autre moyen de référencer dynamiquement toutes les données, puis de les trier?

2
sam

Utilisez des accolades dans cette requête très simple:

=QUERY({Alpha!A2:B;Beta!A2:B;Charlie!A2:B},"select * where Col1 <>'' order by Col2")

L'astuce ici est les accolades {....} que nous utilisons pour créer et combiner les tableaux à partir des différents onglets.

Astuce supplémentaire :
{Alpha!A2:B;Beta!A2:B;Charlie!A2:B}
Un point-virgule ; Combine verticalement (en colonnes, l'une sous l'autre).

{Alpha!A2:B;Beta!A2:B;Charlie!A2:B}</code></pre></b>
Une virgule , Se combine horizontalement (en lignes, l'une à côté de l'autre).

L'utilisation du point-virgule et de la virgule échange des espaces en fonction de votre environnement local.


[~ # ~] modifier [~ # ~] (suivant votre commentaire )

On peut utiliser un paramètre supplémentaire pour order by: order by Col1, Col2
Veuillez noter que order by Est par défaut ascendant asc. Cela signifie qu'il peut être omis (comme nous l'avons fait ici).
Par contre , la descente desc doit être incluse (order by Col1, Col2 desc)

=QUERY({Alpha!A2:B;Beta!A2:B;Charlie!A2:B},"select * where Col1 <>'' order by Col1, Col2")
2
marikamitsos