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.

ArrowRawData

Dans cet article, nous souhaitons regrouper les données par nom d’agent et le revenu total généré par chaque agent.

ArrowOutput

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]