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 :)
À 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!
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é.
Vous pouvez également le faire avec la fonctionnalité Sous-total.
Par exemple...
A chaque changement dans: Catégorie
Utilisez la fonction: Sum
Ajouter un sous-total à: Coût des produits vendus
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)
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
Total
À 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!
Dans Excel 2013, il y aura une option de "regroupement".
Voir la capture d'écran ci-dessous, malheureusement, c'est l'allemand - mais les icônes vous aideront à le trouver.
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
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