Consolide / combine varias hojas de trabajo en una hoja maestra usando VBA

Anonim

A veces queremos fusionar varias hojas en una sola para poder analizar fácilmente los datos y convertirlos en información útil. Estos artículos le dirán cómo combinar varias hojas de trabajo en una hoja de trabajo usando VBA.
Ejemplo:

Aquí he obtenido algunos datos del servidor que devuelve datos a diferentes hojas de trabajo. Agregué una hoja más y la nombré "Maestra". No importa el resto de los nombres de las hojas.
Ahora ejecute esta macro.

Sub Merge_Sheets () Dim startRow, startCol, lastRow, lastCol As Long Dim headers As Range 'Establecer hoja maestra para consolidación Establecer mtr = Worksheets ("Master") Establecer wb = ThisWorkbook' Obtener encabezados Establecer encabezados = Application.InputBox ("Seleccione el Headers ", Tipo: = 8) 'Copiar encabezados en encabezados maestros. Copiar mtr.Range (" A1 ") startRow = headers.Row + 1 startCol = headers.Column Debug.Print startRow, startCol' recorrer todas las hojas para cada ws En wb.Worksheets 'excepto que la hoja maestra se repita Si ws.Name "Master" Entonces ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns.Count). End (xlToLeft) .Column 'obtenga datos de cada hoja de trabajo y cópielos en la hoja maestra Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy _ mtr.Range ("A" & mtr.Cells (Rows) .Count, 1) .End (xlUp) .Row + 1) End If Next ws Worksheets ("Master"). Activar End Sub 

¿Cómo combinar hojas usando esta macro de VBA?

  1. Inserte una nueva hoja y asígnele el nombre "Maestra" en el libro de trabajo. Cambie el nombre más tarde si lo desea.
  2. Inserte un módulo en el editor VBA y copie el código VBA anterior.
  3. Ejecute la macro.
  4. Se le pedirá que seleccione títulos. Seleccione el título y presione Aceptar.

Y esta hecho. Todas las hojas se fusionan en master.

¿Cómo funciona?
Supongo que conoce los conceptos básicos de la creación de objetos y variables en VBA. en la primera parte hemos creado objetos y variables que necesitaremos en nuestras operaciones.

Bueno, la mayoría de las cosas que he explicado usando comentarios en código vba. Veamos la parte principal de este código vba.

Para cada ws en wb.Worksheets 'excepto que la hoja maestra se repita Si ws.Name "Master" Entonces ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns. Count) .End (xlToLeft) .Column 'obtenga datos de cada hoja de trabajo y cópielos en la hoja maestra Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy _ mtr.Range ("A" & mtr. Celdas (Rows.Count, 1) .Fin (xlUp) .Row + 1) End If Next ws

En artículos anteriores aprendimos cómo recorrer las hojas y cómo obtener la última fila y columna usando vba.

Aquí estamos recorriendo cada hoja en el libro de trabajo principal usando for loop.
Para cada ws en wb.

Luego excluimos la hoja "maestra" del bucle, ya que consolidaremos nuestros datos en esa hoja.

Luego obtenemos la última fila y el último número de columna.

Ahora la siguiente línea es muy importante. Hemos realizado múltiples operaciones en una sola línea.
Rango (Celdas (startRow, startCol), Cells (lastRow, lastCol)). Copiar _
mtr.Range ("A" & mtr.Cells (Rows.Count, 1) .End (xlUp) .Row + 1)

Primero formamos un rango usando startRow, startCol y lastRow y lastCol.

Range (Cells (startRow, startCol), Cells (lastRow, lastCol)) Lo hemos copiado usando el método de copia de rango. Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copiar Lo pegamos directamente en la primera celda en blanco después de la última celda no en blanco en la columna A de la hoja maestra (mtr.Cells (Rows.Count, 1) .End (xlUp). Fila + 1). Rango (Celdas (fila inicial, columna inicial), Celdas (fila anterior, columna final)). Copiar _ mtr.Range ("A" & mtr.Cells (Rows.Count, 1) .End (xlUp) .Row + 1)

Este ciclo se ejecuta para todas las hojas y copia los datos de cada hoja en la hoja maestra.

Finalmente, al final de la macro activamos la hoja maestra para ver el resultado.

Así que sí, chicos, así es como pueden combinar cada hoja en un libro de trabajo. Avíseme si tiene alguna consulta con respecto a este código VBA o cualquier tema de Excel en la sección de comentarios a continuación.
Descargar archivo:

Consolidate_Merge varias hojas de trabajo en una hoja maestra usando VBA

Artículos relacionados:

Cómo pasar las hojas

cómo obtener la última fila y columna usando vba

Elimine hojas sin mensajes de confirmación usando VBA en Microsoft Excel

Agregar y guardar un nuevo libro de trabajo usando VBA en Microsoft Excel 2016

Mostrar un mensaje en la barra de estado de Excel VBA

Desactive los mensajes de advertencia con VBA en Microsoft Excel 2016

Articulos populares:

La función BUSCARV en Excel

CONTAR.SI en Excel 2016

Cómo usar la función SUMIF en Excel