Red de conocimiento informático - Aprendizaje de programación - Cómo fusionar varias hojas de trabajo de un libro en una sola hoja de trabajo en Excel

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

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.