Copie el rango usado de cada hoja en una hoja usando VBA en Microsoft Excel

Anonim

En caso de que desee copiar el rango utilizado de cada hoja de trabajo en la hoja maestra, debe leer este artículo. Usaremos el código VBA para copiar los datos de cada hoja de trabajo y luego pegar en otra hoja sin sobrescribir.

La macro agregará una hoja con el nombre Maestro a su libro de trabajo y copiará las celdas de cada hoja de su libro de trabajo en esta hoja de trabajo.

La primera macro realiza una copia normal y la segunda macro copia los valores. Los subs de la macro utilizan las funciones siguientes; la macro no funcionará sin las funciones.

A continuación se muestra la instantánea de los datos de Sheet1 y Sheet2:

Necesitamos seguir los pasos a continuación para iniciar el editor de VB:

  • Haga clic en la pestaña Desarrollador
  • Desde el grupo Código, seleccione Visual Basic

  • Copie el siguiente código en el módulo estándar
Sub CopyUsedRange () Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long If SheetExists ("Master") = True Then MsgBox "La hoja maestra ya existe" Salir Sub End If Application.ScreenUpdating = False Establecer DestSh = Worksheets.Add DestSh .Name = "Master" para cada sh En ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) sh.UsedRange.Copy DestSh.Cells (Last + 1, 1 ) End If End If Next Application.ScreenUpdating = True End Sub Sub CopyUsedRangeValues ​​() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long If SheetExists ("Master") = True Then MsgBox "La hoja maestra ya existe" Salir Sub End Si Application.ScreenUpdating = False Establecer DestSh = Worksheets.Add DestSh.Name = "Master" para cada sh en ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) With sh.UsedRange DestSh.Cells (Last + 1, 1) .Resize (.Rows.Count, _ .Columns.Count) .Value = .Value End With End If End If Next Ap plication.ScreenUpdating = True End Sub Función LastRow (sh As Worksheet) En caso de error Reanudar Siguiente LastRow = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False) .Row On Error GoTo 0 End Function Función Lastcol (sh As Worksheet) On Error Resume Next Lastcol = sh.Cells .Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = False) .Columna en caso de error Ir a 0 Función final Función SheetExists (SName como cadena, _ ByVal opcional WB como libro de trabajo) Como booleano en caso de error Reanudar a continuación si WB no es nada Entonces establezca WB = ThisWorkbook SheetExists = CBool ​​(Len (Sheets (SName) .Name)) Fin de la función 

Ahora, el código de macro está configurado; Ejecutaremos la macro "CopyUsedRange" e insertará una nueva hoja "Maestra" y copiará los datos de cada hoja.

Conclusión:Copiar datos de varias hojas es una tarea manual; sin embargo; con el código anterior, podemos consolidar datos con un solo clic en una macro.

Si te gustaron nuestros blogs, compártelo con tus amigos en Facebook. Y también puedes seguirnos en Twitter y Facebook.

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