Dividir un archivo de excel 2010

Tengo un excel con varias hojas con mas de cien mil filas. Necesito dividir cada hoja en hojas nuevas que tuvieran unas 800 referencias solamente, y que sea de modo automático, pues manualmente ya se que puedo ir a la línea 800, copiar, abrir hoja nueva y pegar, pero es un trabajo que debo hacer relativamente a menudo...

1 respuesta

Respuesta
1

¿Cómo se llaman las hojas que vas a dividir?

¿En qué columna está la información que se va a dividir?

¿Qué nombre van a tener las nuevas hojas?


Suponiendo que son las hojas "Hoja1", "Hoja2", "Hoja3"

Y que la columna "A" es la que tiene la información o la columna que tiene datos desde la fila 1 y hasta la última fila.

Y los nombres de las hojas quedarían "Hoja1 - 1", "Hoja1 - 2", "Hoja1 - 3", "Hoja1 - n"


Ejecuta la macro: Dividir_Registros.

La macro borrará en automático todas las hojas que en su nombre tengan un guión. De esa forma si decides ejecutar nuevamente la macro, primero se borran las hojas y te crea las nuevas.



Sub Dividir_Registros()
'   Por Dante Amor
'
'   Dividir cada hoja en hojas nuevas que tuvieran unas 800 referencias solamente
'
    '
    Application.ScreenUpdating = False
    hojas = Array("Hoja1", "Hoja2", "Hoja3")
    col = "A"
    cada = 800
    '
    Call Borrar_Hojas_Con_Guion
    '
    For h = LBound(hojas) To UBound(hojas)
        nombre = hojas(h)
        n = 1
        Set h1 = Sheets(nombre)
        For i = 1 To h1.Range(col & Rows.Count).End(xlUp).Row Step cada
            Set h2 = Sheets.Add(after:=Sheets(Sheets.Count))
            h2.Name = nombre & " - " & n
            cuantas = i + cada - 1
            h1.Rows(i & ":" & cuantas).Copy h2.Range("A1")
            n = n + 1
        Next
    Next
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub
'
Sub Borrar_Hojas_Con_Guion()
'Por Dante Amor
    Application.DisplayAlerts = False
    For Each h In Sheets
        If InStr(1, h.Name, "-") > 1 Then
            h.Delete
        End If
    Next
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Dividir_Registros
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

Son varios libros, con hojas de distintos nombres... Necesito que me copie las filas enteras, con todas las columnas, y que queden 800 filas por hoja. Encontré en el sitio un pedido similar, pero bastante viejo, y la solución no me funcionó en Excel 2013. Gracias!

Esto es lo que pusiste en tu petición original:

Tengo un excel con varias hojas

Entonces prueba la macro, sigue las indicaciones y ejecuta la macro. La macro copia la fila entera. Lo de la columna es para saber cuál de las columnas siempre tiene datos en todas las filas.

Me dice: Se ha producido el error '9' en tiempo de ejecución: Subíndice fuera del intervalo.

Toco finalizar, y me hizo una sola hoja con las primeras 800 filas.

Desde ya, muchas gracias!

Revisa bien las indicaciones que te puse.

En la macro tienes esta línea:

Hojas = Array("Hoja1", "Hoja2", "Hoja3")

Yo solamente te puse un ejemplo, pero debes poner el nombre de las hojas que vas a dividir. Es por eso el error, seguramente no tienes alguna hoja de mi ejemplo.

También en esta parte de la macro:

Col = "A"

Tienes que poner la letra de la columna en donde siempre tengas datos. Por ejemplo, tienes información en las columna A, B, C, D, E y F, pero en la columna C siempre hay datos, entonces en la macro tienes que cambiar la "A" por la "C", si en todas las columnas siempre tienes datos, entonces puedes dejar la letra "A".


Prueba nuevamente con tu libro.

Si te funciona, no olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas