Regroupement des données en utilisant VBA dans Microsoft Excel
Dans cet article, nous allons créer une macro pour regrouper les données au nom de certaines conditions.
Les données brutes se composent des données de l’équipe de développement commercial. Il comprend le nom, le numéro de téléphone et les ventes par appel.
Dans cet article, nous souhaitons regrouper les données par nom d’agent et le revenu total généré par chaque agent.
Explication logique
Nous avons créé une macro «DataGrouping», qui effectue le calcul requis et le regroupement des données. Il donne un nom d’agent unique et le revenu total généré par chaque agent.
Explication du code
LngLastRow = Cells (Rows.Count, 1) .End (xlUp) .Row Le code ci-dessus est utilisé pour obtenir le numéro de ligne de la dernière cellule.
Alors que ce n’est pas des cellules (i, 1) .Valeur = « »
Wend Le code ci-dessus est utilisé pour boucler jusqu’à ce qu’une cellule vide soit rencontrée.
For LngRow = LngLastRow To (i + 1) Step -1 Next LngRow La boucle For ci-dessus est utilisée pour le bouclage inversé, en commençant par la dernière ligne pour spécifier la première ligne.
Rng.Offset (0, 2) .Value = Rng.Offset (0, 2) .Value + Cells (LngRow, 3) .Value Le code ci-dessus est utilisé pour additionner les valeurs en fonction des critères spécifiés.
Rows (LngRow) .Delete Le code ci-dessus est utilisé pour supprimer la ligne.
Veuillez suivre ci-dessous pour le code
Option Explicit Sub DataGrouping() 'Declaring variables Dim Rng As Range Dim LngRow As Long, LngLastRow, i As Long Application.ScreenUpdating = False 'Getting row number of last cell LngLastRow = Cells(Rows.Count, 1).End(xlUp).Row 'Initializing the first row i = 12 'Looping until blank cell is encountered in first column While Not Cells(i, 1).Value = "" 'Initializing range object Set Rng = Cells(i, 1) 'Looping from last row to specified first row For LngRow = LngLastRow To (i + 1) Step -1 'Checking whether value in the cell is equal to specified cell If Cells(LngRow, 1).Value = Rng.Value Then Rng.Offset(0, 2).Value = Rng.Offset(0, 2).Value + Cells(LngRow, 3).Value Rows(LngRow).Delete End If Next LngRow i = i + 1 Wend Application.ScreenUpdating = True End Sub
Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.
Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]