web-dev-qa-db-fra.com

Comment puis-je "grouper par" et additionner une colonne dans Excel?

J'essaie de comprendre comment "grouper par" les valeurs dans une feuille de calcul Excel.

À partir de l'exemple suivant (c'est une feuille d'inventaire que j'utilise dans mon restaurant :)

Sample Spreadsheet

À l'extrême droite de la feuille de calcul, vous trouverez une colonne intitulée Coût des produits vendus.

J'aimerais pouvoir établir un chiffre total du COGS pour chaque catégorie.

Est-ce possible dans Excel? De plus, j'aimerais le faire dans une feuille de calcul séparée afin que la première feuille de travail (ce qui est décrit) ne soit pas affectée.

Des idées?

Merci!

137
Ian P

La fonctionnalité que vous souhaitez utiliser est Tableaux croisés dynamiques . Il est très facile de faire exactement ce que vous voulez en quelques clics une fois que vous avez appris à utiliser cette fonctionnalité.

85
Scott Obert

Vous pouvez également le faire avec la fonctionnalité Sous-total.

  1. Cliquez sur l'onglet Données dans la barre d'outils du ruban d'Excel.
  2. Cliquez sur le bouton Trier et triez par votre catégorie colonne
  3. Cliquez sur le bouton Sous-total et remplissez la boîte de dialogue comme il convient, puis cliquez sur OK.

Par exemple...

A chaque changement dans: Catégorie

Utilisez la fonction: Sum

Ajouter un sous-total à: Coût des produits vendus

54
rob

Je suppose que vous recherchez le total des stocks pour un compte comme une épicerie, par exemple, pour la semaine 1.

sumif est le moyen le plus simple de rassembler ces données. exemple pris de votre photo:

=sumif(d2:d?,"grocery",j2:j?)

J'ai placé les points d'interrogation car je ne peux pas voir la feuille entière. Vous sélectionneriez toute la colonne D où vous avez les données du compte. D2 à D?, Idem avec la colonne d'utilisation hebdomadaire J2 à J ?.

La formule recherchera l'épicerie texte dans la colonne D; si elle est présente, elle ajoutera les cellules de la colonne J qui correspondent aux colonnes D contenant l'épicerie Word. (ou quel que soit le texte que vous avez mis dans la formule à rechercher)

14
JLewis

L'approche la plus simple peut être une opération de tri Excel suivie d'une opération de sous-total Excel.

Il produit ce que vous recherchez sans modifier la mise en page complète de vos données, comme le ferait un système pivot.

Tri

  • Clique le Les données onglet (ou appuyez sur Alt-A sur le clavier)
  • Cliquez sur Trier (ou appuyez sur S sur le clavier)
  • Cliquez sur la flèche déroulante en regard de "Trier par" dans la zone principale de la fenêtre contextuelle.
  • Sélectionnez "Catégorie" puisque c'est ce que vous voulez grouper.
  • Cliquez sur OK!

Total

  • Clique le Les données onglet (ou appuyez sur Alt-A sur le clavier)
    • Cliquez sur Total icône (ou appuyez sur B sur le clavier)
    • Maintenant que vos données sont triées, lues et remplissez la fenêtre contextuelle du sous-total comme si vous lisiez l'anglais naturel:
       À chaque changement de 
       Catégorie (Cliquez sur la flèche de la liste déroulante et sélectionnez ceci) 
       Utilisez la fonction 
       Somme (Cliquez sur la flèche de la liste déroulante et sélectionnez ceci) 
       Ajouter Sous-total de 
       Coût du bien vendu (sélectionnez les colonnes que vous souhaitez totaliser pour chaque catégorie) 
       
      
         Click OK!
      

  • 5
    Bharat Patel

    Dans Excel 2013, il y aura une option de "regroupement".

    1. Sélectionnez votre table.
    2. Allez à l'onglet Données.
    3. Cliquez sur Structure> Grouping.

    Voir la capture d'écran ci-dessous, malheureusement, c'est l'allemand - mais les icônes vous aideront à le trouver.

    Gliederung > Gruppieren

    4
    soc1c

    Pour ce faire avec un tableau croisé dynamique :

    1) Sélectionnez toutes les données (y compris les étiquettes de colonne)
    2) Insertion> Tableau croisé dynamique
    3) Faites glisser la dimension pour grouper par dans la zone des colonnes ou des lignes
    4) Faites glisser la métrique pour additionner dans la zone des valeurs

     enter image description here

    2
    AlexG

    Je fais ça tout le temps avec vba. Je suis presque sûr d'avoir utilisé la même méthode depuis office 95 ', avec des modifications mineures apportées pour le placement des colonnes. Cela peut être fait avec moins de lignes si vous ne définissez pas les variables. Cela peut être fait plus rapidement si vous avez beaucoup de lignes à parcourir ou plus de choses avec lesquelles vous devez définir votre groupe.

    J'ai rencontré des situations où un «groupe» est basé sur 2 à 5 cellules. Cet exemple ne concerne qu'une colonne, mais il peut être facilement développé si quelqu'un prend le temps de la jouer.

    Cela suppose 3 colonnes et vous devez trier par la colonne group_values. Avant d'exécuter la macro, sélectionnez la première cellule que vous souhaitez comparer dans la colonne group_values.

     'group_values, some_number, empty_columnToHoldSubtotals 
    ' (les choses se passent ici) 
     'cookie 1 vide 
    ' cookie 3 vide 
     'cake 4 vide 
     'hat 0 vide 
    ' hat 3 vide 
     '... 
    ' stop 
    
     Sous-total () 
     'Définit deux chaînes et un compteur de sous-total 
     Dim thisOne, thatOne As String 
     Dim. SubCount As Double 
     
     'ensemence les valeurs 
     thisOne = ActiveCell.Value 
     thatOne = ActiveCell.Offset (1, 0) 
     subCount = 0 
     
     'configure une boucle qui ira jusqu'à atteindre une valeur d'arrêt 
     While (ActiveCell.Value <> "stop") 
     
    ' compare une valeur de cellule à la cellule située en dessous. 
     Si (thisOne = thatOne) Puis 
     'Si les cellules sont égales, le nombre de lignes est ajouté au sous-compte 
     SubCount = subCount + ActiveCell.Offset (0, 1). Valeur 
     
     Sinon 
     'Si les cellules ne sont pas égales, le sous-compte est écrit et le sous-total est réinitialisé. 
     ActiveCell.Offset (0, 2) .Value = ActiveCell.Offset (0, 1) .Value + subCount 
     SubCount = 0 
     
     End Si 
     
     'Sélectionnez la cellule suivante vers le bas 
     ActiveCell.Offset (1, 0) .Sélectionnez 
     
     'attribue les valeurs de la cellule active et celle du dessous aux variables 
     thisOne = ActiveCell.Value 
     thatOne = ActiveCell.Offset (1, 0) 
     Wend 
     
     End Sub 
    
    1
    user232181