Copie un rango con más áreas en una hoja específica usando VBA en Microsoft Excel

Tabla de contenido

En este artículo, crearemos una macro para la unión de varias áreas en una hoja específica.

Los datos brutos constan de algunos datos de muestra, que incluyen el nombre y la edad. Tenemos dos áreas que contienen datos sin procesar. Queremos una unión de ambas áreas a la hoja “Destino”.

Al hacer clic en el botón "Copiar registro" se hará la unión de los datos de ambas áreas, junto con el formato.

Al hacer clic en el botón “Copiar solo valor” también se hará la unión de datos de ambas áreas, pero sin copiar el formato de la celda.

Explicación del código

Para cada hoja pequeña en hojas ("Principal"). Rango ("A9: B13, D16: E20"). Áreas

Siguiente Smallrng

El bucle For Each anterior se utiliza para realizar un bucle en áreas definidas.

Establecer DestRange = Sheets ("Destino"). Rango ("A" y LastRow)

El código anterior se usa para crear un objeto de rango de la última celda, donde queremos copiar los datos.

Smallrng. Copiar DestRange

El código anterior se utiliza para copiar datos al destino especificado.

Siga a continuación para obtener el código

 Opción Explícita Sub CopyMultiArea () 'Declarando variables Dim DestRange As Range Dim Smallrng As Range Dim LastRow As Long' Recorriendo áreas especificadas para cada Smallrng In Sheets ("Main"). Range ("A9: B13, D16: E20"). Áreas 'Encontrar el número de fila de la última celda LastRow = Sheets ("Destino"). Rango ("A1"). SpecialCells (xlLastCell) .Row + 1' Seleccionar la celda donde se deben copiar los registros Si LastRow = 2 Luego, establezca DestRange = Hojas ("Destino"). Rango ("A" & LastRow - 1) Else Establecer DestRange = Hojas ("Destino"). Rango ("A" & LastRow) End If 'Copiando registros al rango de destino especificado Smallrng.Copy DestRange Next Smallrng End Sub Sub CopyMultiAreaValues ​​() 'Declarando variables Dim DestRange As Range Dim Smallrng As Range Dim LastRow As Long' Recorriendo áreas especificadas para cada Smallrng In Sheets ("Main"). Range ("A9: B13, D16: E20" ) .Areas 'Encontrar el número de fila de la última celda LastRow = Sheets ("Destino"). Range ("A1"). SpecialCells (xlLastCell) .Row + 1 With Smallrng' Seleccionar la celda donde se los cables deben copiarse Si LastRow = 2 Luego, establezca DestRange = Sheets ("Destino"). Range ("A" & LastRow - 1) .Resize (.Rows.Count, .Columns.Count) Else Set DestRange = Sheets (" Destino "). Rango (" A "& LastRow) .Resize (.Rows.Count, .Columns.Count) End If End With 'Asignación de valores de origen a destino DestRange.Value = Smallrng.Value Next Smallrng 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

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave