Cómo Combinar Hojas Excel Automáticamente

Advertisement

Combinar decenas o incluso cientos de hojas de Excel en una sola es una tarea tediosa si se realiza manualmente. Afortunadamente, al aprovechar el poder de las Macros VBA, este proceso complejo puede automatizarse con un solo clic, ahorrándole tiempo y esfuerzo significativamente.

Advertisement

Para profesionales que manejan frecuentemente consolidación de datos de varios departamentos o informes periódicos, esta técnica es esencial. Usar una Macro VBA para combinar hojas de Excel no solo es eficiente sino que también minimiza el riesgo de error humano común al copiar datos manualmente.

Ventajas de Usar Macros VBA

Comparado con métodos convencionales de copiar y pegar, la automatización con VBA ofrece varios beneficios. Primero, el proceso de ejecución es muy rápido. Segundo, la consistencia de los datos está garantizada al ser gestionada por el script. Además, puede personalizar el código según necesidades específicas, como combinar datos sin repetir encabezados.

Advertisement

Script VBA para Combinar Todas las Hojas

A continuación se presenta un script VBA confiable y probado. Este código fusionará datos de todas las hojas en un libro de trabajo, excepto la hoja resultante combinada, en una nueva hoja llamada «RDBMergeSheet.

Advertisement
Sub CopyDataWithoutHeaders()
    Dim sh As Worksheet
    Dim DestSh As Worksheet
    Dim Last As Long
    Dim shLast As Long
    Dim CopyRng As Range
    Dim StartRow As Long

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    'Eliminar la hoja "RDBMergeSheet" si existe
    Application.DisplayAlerts = False
    On Error Resume Next
    ActiveWorkbook.Worksheets("RDBMergeSheet").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True

    'Crear nueva hoja llamada "RDBMergeSheet"
    Set DestSh = ActiveWorkbook.Worksheets.Add
    DestSh.Name = "RDBMergeSheet"
    StartRow = 2

    'Recorrer todas las hojas y copiar datos a DestSh
    For Each sh In ActiveWorkbook.Worksheets
        If IsError(Application.Match(sh.Name, _
                                     Array(DestSh.Name, "Information"), 0)) Then
            Last = LastRow(DestSh)
            shLast = LastRow(sh)

            If shLast > 0 And shLast >= StartRow Then
                Set CopyRng = sh.Range(sh.Rows(StartRow), sh.Rows(shLast))

                If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then
                    MsgBox "No hay suficiente espacio en la hoja destino"
                    GoTo ExitTheSub
                End If

                CopyRng.Copy
                With DestSh.Cells(Last + 1, "A")
                    .PasteSpecial xlPasteValues
                    .PasteSpecial xlPasteFormats
                    Application.CutCopyMode = False
                End With
            End If
        End If
    Next

ExitTheSub:
    Application.GoTo DestSh.Cells(1)
    DestSh.Columns.AutoFit

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub

'Función auxiliar para encontrar última fila
Function LastRow(sh As Worksheet)
    On Error Resume Next
    LastRow = sh.Cells.Find(What:="*", _
                            After:=sh.Range("A1"), _
                            Lookat:=xlPart, _
                            LookIn:=xlFormulas, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlPrevious).Row
    On Error GoTo 0
End Function

Note que este script requiere la función auxiliar LastRow, que ha sido incluida para detectar accurateamente la última fila con datos.

Macro VBA para combinar hojas de Excel en la interfaz de Microsoft Excel
Imagen: Editor VBA en Excel mostrando el código macro para combinar hojas.

Cómo Usar Este Script

  1. Abra su libro de trabajo de Excel.
  2. Presione ALT + F11 para abrir el Editor VBA.
  3. En el Explorador de Proyectos, haga clic derecho en su libro, seleccione Insertar > Módulo.
  4. Copie y pegue todo el código anterior en la ventana del módulo vacío.
  5. Cierre el Editor VBA y regrese a Excel.
  6. Ejecute la macro presionando ALT + F8, seleccione CopyDataWithoutHeaders, luego haga clic en Ejecutar.

Como resultado, todos los datos de varias hojas se combinarán ordenadamente en una nueva hoja. Por lo tanto, podrá enfocarse en el análisis de datos en lugar del proceso de recolección.

Consejos y Consideraciones Importantes

Antes de ejecutar la macro, guarde siempre una copia de su libro. Una estructura de datos consistente en cada hoja garantizará una fusión perfecta. Sin embargo, si las estructuras difieren, posiblemente necesite modificar el código.

Este script VBA para combinar hojas de Excel es una base poderosa. Puede desarrollarlo further, por ejemplo añadiendo filtros o combinando solo hojas específicas. Para aprender más sobre VBA, consulte fuentes confiables como el Sitio Web de Ron de Bruin.

Artículos Recientes