Creare fogli di lavoro separati per ogni nome citato nei dati utilizzando VBA in Microsoft Excel.
In questo articolo creeremo una macro per creare fogli di lavoro separati per ogni nome menzionato nei dati.
I dati grezzi sono costituiti da Nome seguito da Dettagli campagna e Numero di chiamate gestite.
In questo esempio, vogliamo creare fogli di lavoro separati per ogni nome e il foglio avrà i dati relativi alle campagne e al numero di chiamate gestite dall’agente.
Spiegazione logica
In questo articolo, abbiamo creato la macro “AfterNamesCopying”. Separerà i dati in fogli diversi, in base al nome dell’agente. Per separare i dati controlliamo “nome” nei dati e copiamo i dati sotto la riga “nome” nel rispettivo foglio.
Spiegazione del codice
Sinistra (WksData.Cells (IntRow, 1), 4) = “name”
Il codice sopra viene utilizzato per verificare se il valore in una cella inizia con “nome”.
Destra (WksData.Cells (IntRow, 1), Len (WksData.Cells (IntRow, 1)) – 5)
Il codice sopra viene utilizzato per estrarre il nome dell’agente dal valore della cella.
Worksheets.Add after: = Worksheets (Worksheets.Count)
Il codice sopra viene utilizzato per inserire un nuovo foglio di lavoro, dopo l’ultimo foglio di lavoro.
ActiveSheet.Name = StrSheet Il codice precedente viene utilizzato per rinominare il foglio attivo.
Intervallo (.Cells (IntRowL, 1), .Cells (IntRowL, 3)). Valore = _ Range (WksData.Cells (IntRow, 1), WksData.Cells (IntRow, 3)). Valore Il codice precedente viene utilizzato per aggiungere i dati relativi a quel particolare agente.
Segui sotto per il codice
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
Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.
Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]