Dividir datos de una hoja de Excel en grupos

Por   22/12/2017

En esta ocasión quiero proponer una solución, con una macro, para dividir los datos de una hoja en varios archivos, cada archivo deberá contener la información de cierto grupo de datos.

Suponiendo que tenemos la siguiente base de datos en la “Hoja1”

dividir-hoja-excel-1

Si queremos agrupar por Departamento, entonces cada departamento con sus vendedores y sus ventas pasarán a un nuevo libro, es decir, todos los vendedores del departamento1 en un libro nuevo, los vendedores del departamento2 en otro libro nuevo, y así sucesivamente para cada departamento.

El libro dep1 quedaría con la siguiente información:

dividir-hoja-excel-2

El libro dep2 quedaría con la siguiente información:

dividir-hoja-excel-3

Para realizar la separación de la información se utiliza la siguiente macro:

Sub Separar_Datos()

Application.ScreenUpdating = False

Application.DisplayAlerts = False

Application.StatusBar = False

Set l1 = ThisWorkbook

Set h1 = Sheets("Hoja1")    'hoja con datos

Set h2 = Sheets("temp")     'hoja temporal

col = "C"                   'columna clave

ucol = "D"                  'ultima columna de datos

n = Columns(col).Column

h2.Cells.Clear

If h1.AutoFilterMode Then h1.AutoFilterMode = False

h1.Columns(col).Copy h2.[A1]

u2 = h2.Range("A" & Rows.Count).End(xlUp).Row

h2.Range("A1:A" & u2).RemoveDuplicates Columns:=1, Header:=xlYes

'
ruta = l1.Path & "\"

u2 = h2.Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To u2

Application.StatusBar = "Generando archivo " & i - 1 & " de " & u2 - 1

clave = h2.Cells(i, "A")

If h1.AutoFilterMode Then h1.AutoFilterMode = False

u1 = h1.Range("A" & Rows.Count).End(xlUp).Row

h1.Range("A1:" & ucol & u1).AutoFilter Field:=n, Criteria1:=clave

Set l2 = Workbooks.Add

Set h21 = l2.Sheets(1)

h1.Range("A1:" & ucol & u1).Copy h21.[A1]

l2.SaveAs ruta & clave

l2.Close

Next

If h1.AutoFilterMode Then h1.AutoFilterMode = False

Application.StatusBar = False

MsgBox "Archivos creados"

End Sub

Cada libro nuevo quedará guardado en la misma carpeta del archivo de Excel y llevará por nombre el mismo nombre del departamento.

Antes de ejecutar la macro deberán actualizar algunos datos en la macro.


Set h1 = Sheets("Hoja1")    'hoja con datos

col = "C"                   'columna clave

ucol = "D"                  'ultima columna de datos

Cambia “Hoja1” por el nombre de tu hoja que contiene los datos

Cambia “C” por la columna que contiene la clave para la separación de los datos.

Cambia “D” por la letra de la columna final de tus datos.

También deberás crear una hoja nueva en tu libro y le pones por nombre “temp”.

Listo, ya tienes tu macro para ejecutar.

Descargar archivos.

Contenido relacionado:
Compartirlo
Gerencie.com en su correo.

Suscríbase y nosotros colocaremos en su bandeja de entrada la mejor información que generamos diariamente.


Déjenos su opinión

En Gerencie.com está permitido opinar, criticar, discutir, controvertir, disentir, etc., pero debe hacerlo con respeto, sin insultar y sin ofender a otros.

Información legal aplicable para Colombia.