Copie un rango de cada hoja en una hoja usando VBA en Microsoft Excel

Anonim

En este artículo, crearemos una macro para copiar datos de todas las hojas del libro de trabajo a una nueva hoja.

Los datos sin procesar para este ejemplo consisten en detalles de empleados de diferentes departamentos en diferentes hojas. Queremos consolidar los detalles de los empleados en una sola hoja.

Hemos creado la macro “CopyRangeFromMultipleSheets” para la consolidación de los datos. Esta macro se puede ejecutar haciendo clic en el botón "Consolidar datos".

Macro creará una nueva hoja de trabajo e insertará los datos consolidados de todas las hojas de trabajo.

Explicación del código

'Recorrido' por todas las hojas para comprobar si existe la hoja "Maestra".

Para cada fuente de este libro de trabajo.

Si Source.Name = "Master" Entonces

MsgBox "La hoja maestra ya existe"

Salir de Sub

Terminara si

próximo

El código anterior se usa para verificar si la hoja "Maestra" existe en el libro de trabajo. Si existe una hoja "Maestra" en el libro de trabajo, el código sale y se muestra un mensaje de error.

Source.Range ("A1"). SpecialCells (xlLastCell) .Row

El código anterior se usa para obtener el número de fila de la última celda de la hoja.

Source.Range ("A1", Range ("A1"). SpecialCells (xlLastCell)). Copiar Destination.Range ("A" & DestLastRow)

El código anterior se usa para copiar el rango especificado en la celda definida.

Siga a continuación para obtener el código

 Sub CopyRangeFromMultipleSheets () 'Declarando variables Fuente de atenuación como hoja de trabajo Destino de atenuación como hoja de trabajo Fuente de atenuaciónLastRow, DestLastRow como larga Application.ScreenUpdating = False' Recorriendo todas las hojas para comprobar si existe una hoja "maestra" para cada fuente en este libro de trabajo. = "Master" Then MsgBox "La hoja maestra ya existe" Salir Sub End If Next 'Insertar una nueva hoja después de la hoja "Principal" Establecer Destino = Hojas de trabajo.Añadir (después: = Hojas ("Principal")) Destino.Nombre = " Maestro "'Recorrer todas las hojas del libro de trabajo para cada fuente de este libro de trabajo. Hojas de trabajo' Evitar la consolidación de datos de la hoja" Principal "y" Maestra "Si Fuente.Nombre" Principal "y Fuente.Nombre" Maestra "Entonces SourceLastRow = Fuente .Range ("A1"). SpecialCells (xlLastCell) .Row Source.Activate If Source.UsedRange.Count> 1 Then DestLastRow = Sheets ("Master"). Range ("A1"). SpecialCells (xlLastCell) .Row If DestLastRow = 1 Luego 'copiando datos de la hoja de origen a la hoja de destino Source.Range ("A 1 ", Rango (" A1 "). SpecialCells (xlLastCell)). Copiar Destination.Range (" A "& DestLastRow) Else Source.Range (" A2 ", Rango (" A1 "). SpecialCells (xlCellTypeLastCell)). Copiar Destination.Range ("A" & (DestLastRow + 1)) End If End If End If Next Destination.Activate Application.ScreenUpdating = True End Sub 

Si te gustó este blog, compártelo con tus amigos en Facebook. Además, puede seguirnos en Twitter y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos al sitio de correo electrónico