Cómo fusionar varias hojas de trabajo de un libro en una sola hoja de trabajo en Excel
El libro de trabajo donde se encuentran los datos originales contiene varias hojas de trabajo con el mismo formato, pero el contenido de cada hoja de trabajo es diferente, como datos de la hoja de trabajo con diferentes nombres o datos completados por diferentes departamentos;
Cree un nuevo libro de trabajo en el mismo directorio que los datos originales y cree dos hojas de trabajo llamadas "Página de inicio" y "Combinar tabla de resumen";
Presione Alt F11 para ingresar a la edición del código VBA y interfaz de depuración;
Inserte un módulo de acuerdo con las indicaciones de la siguiente figura;
Pegue el siguiente código en el espacio en blanco del módulo:
Sub CombineSheetsCells ()
Atenuar wsNewWorksheet como hoja de trabajo
Atenuar cel como rango
Atenuar fuente de datos, título de fila, título de columna, filas de datos de origen, columnas de datos de origen como variante
Dim TitleRow, TitleColumn como rango p>
Dim Num como entero
Dim DataRows As Long
DataRows = 1
Dim TitleArr()
Elección de atenuación
Atenuar MiNombre$, MiNombreDeArchivo$, NombreDeHojaActiva$, DirecciónTodos$, FilaDeDirección$, ColumnaDeDirección$, DirectorioDeArchivo$, Hoja De Datos$, MiDelimitador$
Atenuar n, i
n = 1
i = 1
Application.DisplayAlerts = False
Hojas de trabajo("Tabla de resumen consolidada") .
DeleteSet wsNewWorksheet = Worksheets.Add(, after:=Worksheets(Worksheets.Count))
wsNewWorksheet.Name = "Fusionar hoja de resumen"
MyFileName = Application.GetOpenFilename("Hoja de trabajo de Excel delgada (*.xls*), *.xls*")
Si MyFileName = "False" Entonces
MsgBox "¡No hay ningún archivo seleccionado! ¡Seleccione un archivo combinado nuevamente! ", vbInformation, "Cancelar"
Else
Workbooks.Open Filename:=MyFileName
Num = ActiveWorkbook.Sheets.Count
MyName = ActiveWorkbook.Name
Establecer DataSource = Application.InputBox(prompt:="Seleccione el área de datos para fusionar:", Type:=8)
AddressAll = DataSource.Address
ActiveWorkbook.ActiveSheet.Range(AddressAll).Select
SourceDataRows
= Selection.Rows.Count
SourceDataColumns = Selection.Columns.Count
Application.ScreenUpdating = False
Application.EnableEvents = False
Para i = 1 a Num
ActiveWorkbook.Sheets(i).Activate
ActiveWorkbook.Sheets(i).Range(AddressAll).Select
Selección .Copy
ActiveSheetName = ActiveWorkbook.ActiveSheet.Name
Workbooks(ThisWorkbook.Name).Activate
ActiveWorkbook.Sheets("Fusionar hoja de resumen").Seleccionar
ActiveWorkbook.Sheets("Hoja de resumen consolidada").Range("A" & DataRows).Value = ActiveSheetName
ActiveWorkbook.Sheets("Hoja de resumen consolidada").Range ( Celdas(DataRows, 2), Celdas(DataRows, 2)).Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone,
SkipBlanks:=False, Transpose: =False
Selection.PasteSpecial Pegar:=xlPasteAll, Operation:=xlNone, SkipBlanks:=_
False, Transpose:=False
Selection.PasteSpecial Paste :=xlPasteValues, Operación:=xlNone, SkipBlanks_:=False, Transpose:=False
DataRows = DataRows SourceDataRows
Libros de trabajo (Mi nombre).Activar
Siguiente i
Application.ScreenUpdating = True
Application.EnableEvents = True
Finalizar si
Libros de trabajo (Mi nombre).Cerrar
End Sub
Inserte un control de formulario en la hoja de trabajo "Inicio" como se muestra a continuación y especifique la macro como el nombre del código insertado;
Haga clic en "Inicio" " botón insertado en la hoja de trabajo, siga las indicaciones y busque el libro de datos original;
El siguiente paso, use el mouse para seleccionar el rango de datos que se fusionará;
Haga clic en el botón Aceptar y espere el código. Una vez completada la operación, todos los datos se fusionarán en la "Tabla de resumen de combinación";
Seleccione todas las áreas de datos para realizar el filtrado automático.
Luego seleccione uno de los campos, seleccione "En blanco" y el contenido del título;
Luego haga clic derecho para eliminar las filas inútiles filtradas y luego elimine toda la columna A.