Combine tablas en varias hojas en una sola hoja.

Combine tablas en varias hojas en una sola hoja.

Tengo un documento de Excel con más de 30 hojas. Cada uno tiene el mismo diseño: una tabla simple que tiene las mismas columnas, encabezado/filas totales, pero diferente número de filas (ninguna tiene más de 500 filas).

Quiero combinarlos en una mesa maestra. Operación única.

Manualmente, podría copiar 30 tablas una tras otra en una nueva hoja de trabajo. Cuando termine, ordenaría y eliminaría cualquier fila en blanco/encabezado/total. No me importa el formato. Supongo que me llevaría entre 15 y 20 minutos, pero siempre existe el riesgo de cometer un error y perderme una hoja o algo así.

Parece que VBA llevaría demasiado tiempo. En este momento casi estoy considerando importar el libro de trabajo a SQL Server, UNIONARLOS y copiar y pegar el resultado en Excel.

¿Tienes algún buen truco?

Respuesta1

Si esto es algo que necesitará hacer con frecuencia, le recomiendo escribir una rutina rápida de VBA. Si es algo que se hace una sola vez, lo haría manualmente. Para asegurarse de no saltarse una tabla accidentalmente, utilice cortar y pegar en lugar de copiar y pegar.

Así es como haría esto. Funciona bastante rápido con los atajos de teclado.

  • Abra el libro original en Excel como de solo lectura para evitar pérdidas accidentales de datos.
  • Abra un nuevo libro de trabajo para contener la nueva tabla maestra.
  • Cierre cualquier otro libro de trabajo para que sea fácil cambiar entre los dos con los que está trabajando.
  • Seleccione la primera hoja de trabajo del libro original que desea copiar.

Ahora puedes empezar a utilizar atajos de teclado.

  1. Ctrl + Homepara saltar a la parte superior izquierda de la hoja de cálculo. (Esto saltará a A1 a menos que haya filas o columnas congeladas).
  2. Shift + Ctrl + Endpara seleccionar todo lo que queda a la izquierda y abajo de la celda seleccionada actualmente.
  3. Ctrl + Xpara cortar los datos.
  4. Ctrl + Tabpara cambiar al nuevo libro de trabajo.
  5. Vuelve a verificar que estés en la ubicación correcta y presiona Enterpara pegar los datos.
  6. Ctrl + Endpara ir a la última celda pegada.
  7. Down Arrowpara ir a la siguiente fila no utilizada.
  8. Ctrl + Left Arrowpara volver a la columna A.
  9. Ctrl + Tabpara volver al libro de trabajo original.
  10. Ctrl + Page Downpara seleccionar la siguiente hoja de trabajo.
  11. Vuelve al paso 1 y repite hasta terminar.

Cuando haya terminado, puede Ctrl + Page Upvolver a revisar todas las hojas de trabajo originales y verificar que se hayan eliminado todos los datos.

Suponiendo que su fila de título no esté congelada, esto copiará la fila de título de las 30 tablas. En ese caso, ordene la tabla maestra para agrupar todas las filas de títulos duplicados y elimine los extras o use Datos -> Eliminar duplicados.

Si accidentalmente omite un paso o pega datos existentes, presione Ctrl + Zpara deshacer.

Acabo de hacer una prueba siguiendo los pasos anteriores. El libro que utilicé tenía 10 hojas de trabajo, cada una con 120 filas de datos. Me tomó 1 ½ minutos crear la tabla maestra. Si no está familiarizado con los atajos de teclado, puede que le lleve el doble de tiempo. Para 30 hojas de trabajo, supongo que le llevará 10 minutos.

Respuesta2

Agrego el mismo problema, encontré una macro increíble aquí: http://excel.tips.net/T003005_Condensing_Multiple_Worksheets_Into_One.html

Sub Combine()
    Dim J As Integer

    On Error Resume Next
    Sheets(1).Select
    Worksheets.Add ' add a sheet in first place
    Sheets(1).Name = "Combined"

    ' copy headings
    Sheets(2).Activate
    Range("A1").EntireRow.Select
    Selection.Copy Destination:=Sheets(1).Range("A1")

    ' work through sheets
    For J = 2 To Sheets.Count ' from sheet 2 to last sheet
        Sheets(J).Activate ' make the sheet active
        Range("A1").Select
        Selection.CurrentRegion.Select ' select all cells in this sheets

        ' select all lines except title
        Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select

        ' copy cells selected in the new sheet on last line
        Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
    Next
End Sub

¡Simplemente copie y pegue la macro, ejecútela y listo!

información relacionada