Necesito una macro que divida un archivo en varios, en grupos de 75 líneas cada archivo.

Tengo un archivo de unos 3.000 alumnos para clases on line. Cada aula online permite 75 alumnos. Necesito que el archivo general de alumnos se divida en tantos archivos como aulas se vayan a tener con sus 75 alumnos.

Por ejemplo, si yo tuviera un archivo general de 220 alumnos, se deberían de crear automáticamente 3 archivos uno con los primeros 75 alumnos del listado general, otro con los siguientes 75 alumnos y el tercer archivo se crearía con el resto de alumnos, que en este caso sería un aula de 70 personas, ya que en el general solo había 220 alumnos.

No necesito que se clasifiquen por ningún criterio concreto, solo que en cada archivo haya 75 alumnos y que no se repitan o dupliquen el mismo alumno en la misma o en distintas aulas. En el archivo general los alumnos no están duplicados.

1 respuesta

Respuesta
3

H o l a:

Te anexo la macro.

La macro funciona suponiendo que la lista de alumnos están en la "hoja1", empiezan en la fila 1 y están en la columna "A".

Lo que va a hacer la macro es copiar de 75 en 75 a un nuevo archivo, los nombres de los archivos se llamarán "Aula1", "Aula2", "Aula3", etc. y se guardarán en la misma carpeta donde tendrás el archivo con la macro.

Sub LlenarLibroDestino()
'Por.Dante Amor
    Set l1 = ThisWorkbook                       'Libro origen
    Set h1 = l1.Sheets("Hoja1")                 'Hoja origen
    ruta = l1.Path & "\"
    nmax = 75
    n = 1
    For i = 1 To h1.Range("A" & Rows.Count).End(xlUp).Row Step nmax
        Set l2 = Workbooks.Add
        h1.Rows(i & ":" & i + nmax - 1).Copy l2.Sheets(1).[A1]
        l2.SaveAs ruta & "Aula" & n, FileFormat:=xlOpenXMLWorkbook
        n = n + 1
        l2.Close
    Next
    MsgBox "Fin"
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Lucía, escribe algunos ejemplos o imágenes de cómo está tu información y cómo quieres el resultado.

Para más detalle envíame un tu archivo con los datos de los alumnos y otro archivo de ejemplo para ver cómo quieres el resultado.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Lucía Mondada Romero” y el título de esta pregunta.

R ecuerda valorar la respuesta.

Dante, te acabo de mandar un correo. 

Te anexo la macro actualizada

Sub Dividir()
'Por.Dante Amor
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Set l1 = ThisWorkbook                       'Libro origen
    Set h1 = l1.ActiveSheet                     'Hoja origen
    ruta = l1.Path & "\"
    nmax = 75
    n = 1
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row Step nmax
        Set l2 = Workbooks.Add
        Set h2 = l2.Sheets(1)
        h1.Rows(1).Copy h2.Rows(1)
        h1.Rows(i & ":" & i + nmax - 1).Copy h2.[A2]
        l2.SaveAs ruta & "GRUPO " & n, FileFormat:=xlOpenXMLWorkbook
        n = n + 1
        l2.Close
    Next
    MsgBox "Fin"
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas