En este artículo, crearemos una macro para crear hojas de trabajo separadas para cada nombre mencionado en los datos.

Los datos brutos consisten en Nombre seguido de Detalles de la campaña y Número de llamadas manejadas.

ArrowRawData

En este ejemplo, queremos crear hojas de trabajo separadas para cada nombre y la hoja tendrá datos relacionados con las campañas y la cantidad de llamadas manejadas por el agente.

ArrowOutput

Explicación lógica

En este artículo, hemos creado la macro «AfterNamesCopying». Separará los datos en diferentes hojas, según el nombre del agente. Para separar los datos, buscamos «nombre» en los datos y copiamos los datos debajo de la fila «nombre» en la hoja correspondiente.

Explicación del código

Izquierda (WksData.Cells (IntRow, 1), 4) = «nombre»

El código anterior se usa para verificar si el valor en una celda comienza con «nombre».

Derecha (WksData.Cells (IntRow, 1), Len (WksData.Cells (IntRow, 1)) – 5)

El código anterior se utiliza para extraer el nombre del agente del valor de la celda.

Worksheets.Add after: = Worksheets (Worksheets.Count)

El código anterior se utiliza para insertar una nueva hoja de trabajo, después de la última hoja de trabajo.

ActiveSheet.Name = StrSheet El código anterior se utiliza para cambiar el nombre de la hoja activa.

Rango (.Cells (IntRowL, 1), .Cells (IntRowL, 3)). Valor = _ Rango (WksData.Cells (IntRow, 1), WksData.Cells (IntRow, 3)). Valor El código anterior se utiliza para agregue datos relacionados con ese agente en particular.

Siga a continuación el código

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 te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]