VBA – Autorrellenar (Autofill) con una Macro
In this Article
Este artículo demuestra cómo utilizar el Autorrelleno en VBA.
Autorrelleno en VBA
El autorrelleno es una gran herramienta en Excel cuando los datos son repetitivos o si son secuenciales (como los días de la semana, las fechas, los meses del año, etc.). Normalmente rellenamos el primer par de celdas con los datos requeridos, y luego usamos Autorrelleno para copiar los datos requeridos en un rango seleccionado.
Todo esto se puede hacer utilizando una macro VBA.
Autorrelleno Utilizando Números Incrementales
En primer lugar, en nuestro código, podemos declarar dos variables de rango.
Selection1 es el rango con los datos a autocompletar – por ejemplo 1 y 2.
Selection2 es el rango completo a autocompletar, esto incluye el primer rango más los espacios en blanco a autocompletar.
A continuación, utilizamos el método AutoFill para rellenar el segundo rango de selección.
Public Sub MiAutorrelleno()
'Por AutomateExcel.com
'Declarar las variables de rango
Dim selection1 As Range
Dim selection2 As Range
'Establecer las variables de rango = sus respectivos rangos
Set selection1 = Hoja1.Range("A1:A2")
Set selection2 = Hoja1.Range("A1:A12")
'Rellenar automáticamente
selection1.AutoFill Destination:=selection2
End Sub
A continuación, podemos ejecutar la macro para autorellenar el rango (A1:A12).
Cuando utilizamos el método de Autorrelleno, podemos seleccionar el tipo de Autorrelleno que deseamos realizar. En el ejemplo anterior, no especificamos el tipo de Autorrelleno, lo que significa que se utilizó el tipo por defecto – en este caso, incrementando los números en 1 en cada línea.
Autorrelleno por Meses
La macro para autocompletar utilizando meses es casi idéntica a la utilizada para incrementar los números, con una importante excepción.
Public Sub AutorrellenarMeses()
'Por AutomateExcel.com
'Declara las variables de rango
Dim selection1 As Range
Dim selection2 As Range
'Establecer las variables de rango = sus respectivos rangos
Set selection1 = Hoja1.Range("A1:A2")
Set selection2 = Hoja1.Range("A1:A12")
'Autorrellenar los meses
selection1.AutoFill Destination:=selection2, Type:=xlFillMonths
End Sub
Cuando rellenamos el tipo de autorrellenado, se nos da un número de Constantes de Excel para elegir. Si dejamos esto fuera, Excel determinará el tipo de datos a rellenar a partir de los datos originales dados.
Sin embargo, Excel es capaz de recoger series estándar como meses, días de la semana y números incrementales sin necesidad de utilizar el argumento Tipo.
Autorrelleno con xlFillCopy
Si queremos utilizar una macro de Autorrelleno para copiar la información en nuevas celdas, podemos utilizar la constante xlFillCopy.
Public Sub AutorrellenoCopy()
Dim Selection1 As Range
Dim Selection2 As Range
Set Selection1 = Hoja1.Range("A1:A1")
Set Selection2 = Hoja1.Range("A1:A12")
Selection1.AutoFill Destination:=Selection2, Type:=xlFillCopy
End Sub
La ejecución de esta macro copiará los datos en Range(«A1») hasta Range(«A1:A12») en lugar de autorellenar las celdas con los meses siguientes a partir de «Ene».
Autorrelleno con xlFlashFill
Cuando necesitamos convertir texto a columnas en Excel, podemos utilizar la opción de texto a columnas, o podemos utilizar una opción llamada Flash Fill. Esto es extremadamente útil en VBA.
Tomemos como ejemplo los siguientes datos:
Podemos escribir el apellido «Tolley» en la celda B2 y luego utilizar una macro para rellenar el resto de los datos.
Sub FlashFill()
Dim Selection1 As Range
Dim Selection2 As Range
Set Selection1 = Range("B2:B2")
Set Selection2 = Range("B2:B15")
Selection1.AutoFill Destination:=Selection2, Type:=xlFlashFill
End Sub
Podemos repetir esto en las columnas C, D y E para obtener los datos restantes.
Sub FlashFill2()
Dim Selection1 As Range
Dim Selection2 As Range
Set Selection1 = Range("C2:C2")
Set Selection2 = Range("C2:C15")
Selection1.AutoFill Destination:=Selection2, Type:=xlFlashFill
Set Selection1 = Range("D2:D2")
Set Selection2 = Range("D2:D15")
Selection1.AutoFill Destination:=Selection2, Type:=xlFlashFill
Set Selection1 = Range("E2:E2")
Set Selection2 = Range("E2:E15")
Selection1.AutoFill Destination:=Selection2, Type:=xlFlashFill
End Sub
Cada columna se llenará con los datos apropiados basados en el valor de la fila 2.
La codificación VBA es fácil
Deje de buscar código VBA en línea. Aprenda más sobre AutoMacro – Un generador de código VBA que permite a los principiantes codificar procedimientos desde cero con un mínimo conocimiento de codificación y con muchas características que ahorran tiempo a todos los usuarios