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.

ArrowRawData

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.

ArrowOutput

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]