Comment regrouper des données par mois dans Google Sheets

39

J'ai une feuille de Google qui contient divers indicateurs pour chaque jour. Chaque jour a sa propre ligne:

day        | cost | impressions | clicks | conversions
2014-02-01 | $45  | 3,540       | 80     | 5
2014-02-02 | $49  | 3,700       | 88     | 7
2014-02-03 | $42  | 3,440       | 79     | 7
2014-02-04 | $51  | 3,940       | 91     | 10

Je veux faire pivoter la table et résumer cost, impressions, clickset conversioncolonnes par mois ( et non par jour) comme ceci:

Month        | Sum of cost | Sum of impressions | Sum of clicks | Sum of conversions
February     | $187        | 14620              | 338           | 29

Dans Excel, je viens d'utiliser la Group byfonction, mais je constate qu'elle n'est pas disponible dans Google Sheets.

Bogdan
la source
2
La réponse correcte à partir de 2018 est celle-ci: webapps.stackexchange.com/a/120852
Kos

Réponses:

18

En utilisant les Data->Pivot table report...offres exactement ce que vous demandez. Il est possible que vous deviez utiliser les " Nouvelles feuilles de Google ".
J'utilise cela comme paramètre par défaut et il était facile de réaliser ce que vous vouliez, comme dans Excel.

Ici, dans ma réponse, j’explique comment activer les nouvelles feuilles de calcul.


Il semble que je n'ai pas complètement compris le problème.

Nous devons d’abord avoir le mois. Pour cela ajouter une nouvelle colonne pour extraire la date en utilisant =MONTH(DATE_COLUMN).

entrez la description de l'image ici

Ensuite, créez un rapport Pivot:

entrez la description de l'image ici

StampedeXV
la source
essayé les 'nouvelles feuilles de google' et il n'y a aucune option de regrouper les dates par mois dans les rapports de tableau croisé dynamique, peut-être pourriez-vous nous éclairer?
Bogdan
Désolé, je pensais que le principal problème était que vous ne pouviez pas trouver de groupe. Alors pourquoi ne pas ajouter une colonne fournissant uniquement le mois et grouper par celui-ci?
StampedeXV
Malheureusement, je ne peux pas ajouter dans une autre colonne, ni changer le format de la feuille source car elle est utilisée pour alimenter un tableau de bord dans Cyfe, mais merci pour vos réponses ...
Bogdan
Vous pouvez ajouter la colonne, puis la masquer pour la rendre invisible. Vous pouvez néanmoins l'utiliser dans le rapport de tableau croisé dynamique.
StampedeXV
Excellente idée. J'ai essayé, mais Cyfe ne semble pas pouvoir ignorer les colonnes cachées. Je vais juste devoir garder 2 feuilles en double avec les données sources pour résoudre ce problème ....
Bogdan
30

Google Sheets prend désormais en charge cette fonctionnalité en tant que "Créer un groupe de dates pivot".

Une fois que vous avez ajouté votre colonne de date / heure en tant que ligne:

  1. Faites un clic droit sur l'une des valeurs du tableau croisé dynamique,
  2. Choisissez 'Créer un groupe de dates de pivot'
  3. Choisissez le groupe souhaité (par exemple, «Mois» ou «Année-mois»)

Avant + Exemple visuel:

Tableau croisé dynamique avant le regroupement

Après:

entrez la description de l'image ici

Plus d'informations

MotohawkSF
la source
cela devrait être probablement la bonne réponse
senseiwu
C'est la meilleure réponse de loin à partir de 2018
Calvin
Puis-je utiliser mes propres formules avec les tableaux croisés dynamiques? Je veux obtenir des quantiles
Hubert Grzeskowiak
3
Je ne vois pas cette option dans ma colonne de dates
Ian Hyzy
5

Sans colonne d'assistance:

=query(A:E,"select sum(B), sum(C), sum(D), sum (E) group by month(A) offset 1")  

en supposant dayest en A1.

Une documentation qui décrit bien le fonctionnement de ce qui précède plus que jamais.

nuts
la source
1
Cela semble vraiment utile. Pourriez-vous expliquer comment cela fonctionne? Je n'ai jamais utilisé la fonction de requête.
Shawn V. Wilson
Est-il possible de regrouper par mois ET année?
Hubert Grzeskowiak Le
@HubertGrzeskowiak Oui, c’est
Lee Taylor
4

Donc, pour ceux qui ont posé la même question que moi, il n'y a apparemment pas encore de fonction de champ Groupe pour Pivot dans Google Sheet (comme dans Excel). La méthode la plus simple consiste donc à ajouter une autre colonne transformant vos dates aux groupes dont vous avez besoin, par exemple des semaines, des mois, des années ... J'espère que la fonctionnalité sera bientôt disponible dans Google.

F Samie
la source
2

J'ai trouvé un moyen plus simple de convertir la cellule de date en texte dans une nouvelle colonne.

=Text(A1, "mmm-yy")

Vous pouvez ensuite pivoter et il va regrouper par mois.

Pedropagina
la source
1

Aucune des réponses précédentes n'a fonctionné pour moi, car j'utilise un formulaire comme entrée. Vous ne pouvez pas ajouter de formules sur la feuille de formulaire.

Voici mon travail.

En lisant ce qui précède, le tableau croisé dynamique a besoin d’une colonne avec mois pour pouvoir être activée. Vous pouvez utiliser un critère différent, comme semaine ou vendredi. Ou John, Doe, Foo ou un bar. Tout ce que vous voulez "grouper".

Dans mon cas: la date est en B, =month(B2)donne le mois. J'ai donc besoin d'une colonne supplémentaire avec =month(B2).

Le formulaire ne permet pas les formules. Et sur une feuille avec un formulaire, vous ne pouvez pas ajouter une colonne avec des formules (exactement: vous pouvez, mais une nouvelle entrée de formulaire supprime la formule sur la ligne correspondante).

Deuxième feuilles

Une deuxième feuille simple avec =page1!A1etc et en ajoutant la colonne mois a le même problème. Une nouvelle entrée sous la forme => ajoute une ligne.

Solution

Alors j'ai fait ce qui suit.

  • Ajout d'une feuille supplémentaire
  • Utilisé =importrange("longkeynumber";"sheet form!A1:E1000")sur A1
  • (importrange est d'importer un document différent, mais bon… ça marche)
  • En F, utilisé =if(B3>0;(MONTH(B3));"")
  • Lors de l'ajout de données supplémentaires dans la feuille A, les formules de la feuille B avec la plage d'importation restent.
  • Vous pouvez maintenant ajouter un tableau croisé dynamique, avec (dans ce cas) F comme ligne ou colonne.
utilisateur165410
la source
Dans la réponse de user165410 , il déclare: - En F, utilisé =if(B3>0;(MONTH(B3));"")C'est une bonne solution, mais elle peut être simplifiée encore: - en F3, =arrayformula(if(b3:b>0;(month(b3:b));""))cela permet de mettre automatiquement le mois pour chaque cellule non vide de la plage B3: B. L'insertion ou la suppression d'une ligne, ou le déplacement d'une ligne ne va PAS foirer les formules!
Stefan van Aalst
Lorsqu'une nouvelle réponse est ajoutée à une feuille de calcul, une nouvelle ligne est insérée. Des formules matricielles (résultat de plusieurs valeurs) peuvent être utilisées à la place ou des formules scalaires (résultats de valeurs uniques). Par ailleurs, lorsque les données source proviennent du même fichier, vous pouvez utiliser des formules matricielles pour renvoyer le même résultat que IMPORTRANGE et elles sont immédiatement mises à jour
Rubén
J'aime cette solution! dans F3, = arrayformula (if (b3: b> 0; (mois (b3: b)); "")) Le seul problème est que les données portent sur plus d'un an et que chaque mois est combiné avec le même mois dans le année précédente.
Vic M
1

Si vous ajoutez déjà une nouvelle colonne, vous pouvez également simplement utiliser eomonth("reference cell",0). Cela prendra toujours le dernier jour du mois. Ou eomonth("reference cell",-1)+1pour obtenir le début du mois.

La beauté de cette approche au lieu de la conversion en texte est que lorsque vous faites pivoter les données. Cela va automatiquement trier ascendant de gauche à droite.

Skho
la source
1

J'ai trouvé un moyen que j'aime mieux. J'ai simplement créé une colonne masquée en procédant comme suit:


  • Arrondissez chaque jour du mois au premier jour du mois.

= A2 - jour (A2) + 1 où A2 est la date standard

  • Définissez la mise en forme sur personnalisé et choisissez mois / année. Cela vous demandera de supprimer le réglage du jour. Ainsi, il affichera mois / année lorsque la valeur réelle sera le premier jour du mois, mois, année.
  • Le tableau croisé dynamique va maintenant regrouper tous les éléments similaires et afficher le formatage de la colonne avec mois / année.

De cette façon, vous obtiendrez des valeurs uniques au fil des années. J'ai moi-même décidé de masquer la colonne en question car j'ai un document connecté à cette feuille qui extrait les deux premières lignes au fur et à mesure que je les ajoute.

Formule pour date et formatage

Format de date personnalisé

Résultats du tableau croisé dynamique

Nick Mean
la source