J'ai une feuille de Google qui contient diverses mesures 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 le tableau et résumer la cost
, impressions
, clicks
et conversion
colonnes par mois (pas par jour) comme suit:
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 fonction Group by
, mais je constate qu'elle n'est pas disponible dans Google Sheets.
Utiliser le Data->Pivot table report...
offre exactement ce que vous demandez. Il est possible que vous deviez utiliser le " Nouvelles feuilles de Google ".
J'utilise ce paramètre par défaut et il était facile de réaliser ce que vous souhaitiez, comme dans Excel.
Here 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, ajoutez une nouvelle colonne pour extraire la date en utilisant =MONTH(DATE_COLUMN)
.
Ensuite, créez un rapport Pivot:
Une fois que vous avez ajouté votre colonne de date/heure en tant que ligne:
Sans colonne d'assistance:
=query(A:E,"select sum(B), sum(C), sum(D), sum (E) group by month(A) offset 1")
en supposant que day
est en A1.
Documentation cela décrit mieux le fonctionnement de ce qui précède que jamais.
Donc, pour ceux qui ont posé la même question que moi, il n’apparaît pas encore de fonction de champ Groupe pour Pivot dans Google Sheet (comme dans Excel). Par conséquent, le moyen le plus simple consiste à ajouter une autre colonne transformant vos dates en groupes dont vous avez besoin, par exemple. semaines, mois, années ... Espérons que la fonctionnalité sera bientôt disponible dans Google.
J'ai trouvé un moyen que j'aime mieux. J'ai simplement créé une colonne masquée en procédant comme suit:
= A2 - jour (A2) + 1 où A2 est la date standard
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.
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. Il me fallait donc 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).
Une seconde feuille simple avec =page1!A1
etc et en ajoutant le mois de la colonne pose le même problème. Une nouvelle entrée sous la forme => ajoute une ligne.
Alors j'ai fait ce qui suit.
=importrange("longkeynumber";"sheet form!A1:E1000")
utilisé sur A1=if(B3>0;(MONTH(B3));"")
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.
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)+1
pour 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.
Dans la réponse answer de user165410, il déclare:
=if(B3>0;(MONTH(B3));"")
C'est une bonne solution, mais cela peut être encore plus simple:
=arrayformula(if(b3:b>0;(month(b3:b));""))
Ce que cela fait est automatiquement mis 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!