Créer des feuilles de calcul distinctes pour chaque nom mentionné dans les données en utilisant VBA dans Microsoft Excel.
Dans cet article, nous allons créer une macro pour créer des feuilles de calcul distinctes pour chaque nom mentionné dans les données.
Les données brutes se composent du nom suivi des détails de la campagne et du nombre d’appels traités.
Dans cet exemple, nous voulons créer des feuilles de calcul distinctes pour chaque nom et la feuille contiendra des données liées aux campagnes et au nombre d’appels traités par l’agent.
Explication logique
Dans cet article, nous avons créé la macro «AfterNamesCopying». Il séparera les données sur différentes feuilles, en fonction du nom de l’agent. Pour séparer les données, nous vérifions le «nom» dans les données et copions les données sous la ligne «nom» dans la feuille respective.
Explication du code
Gauche (WksData.Cells (IntRow, 1), 4) = « nom »
Le code ci-dessus est utilisé pour vérifier si la valeur dans une cellule commence par «nom».
Droite (WksData.Cells (IntRow, 1), Len (WksData.Cells (IntRow, 1)) – 5)
Le code ci-dessus est utilisé pour extraire le nom de l’agent de la valeur de la cellule.
Worksheets.Add after: = Feuilles de travail (Worksheets.Count)
Le code ci-dessus est utilisé pour insérer une nouvelle feuille de calcul, après la dernière feuille de calcul.
ActiveSheet.Name = StrSheet Le code ci-dessus est utilisé pour renommer la feuille active.
Range (.Cells (IntRowL, 1), .Cells (IntRowL, 3)). Value = _ Range (WksData.Cells (IntRow, 1), WksData.Cells (IntRow, 3)). Value Le code ci-dessus est utilisé pour ajouter des données liées à cet agent particulier.
Veuillez suivre ci-dessous pour le code
Option Explicit Sub AfterNamesCopying() 'Declaring variables Dim wks As Worksheet, WksData As Worksheet Dim IntRow As Integer, IntRowL As Integer Dim StrSheet As String 'Disabling screen updates Application.ScreenUpdating = False 'Initializing variables Set WksData = ActiveSheet IntRow = 10 'Loop until cell in first column is empty Do Until IsEmpty(WksData.Cells(IntRow, 1)) 'Checking whether value in the cell begins with string "name" If Left(WksData.Cells(IntRow, 1), 4) = "name" Then 'Extracting name from the cell value StrSheet = Right(WksData.Cells(IntRow, 1), Len(WksData.Cells(IntRow, 1)) - 5) 'Adding new worksheet Worksheets.Add after:=Worksheets(Worksheets.Count) 'Renaming the sheet ActiveSheet.Name = StrSheet IntRowL = 1 Else With Worksheets(StrSheet) 'Inserting data to respective sheets Range(.Cells(IntRowL, 1), .Cells(IntRowL, 3)).Value = _ Range(WksData.Cells(IntRow, 1), WksData.Cells(IntRow, 3)).Value End With IntRowL = IntRowL + 1 End If IntRow = IntRow + 1 Loop 'Enabling screen updates 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]