VBA – Autorrellenar (Autofill) con una Macro

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on agosto 22, 2022

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).

Procedimiento Autorrelleno VBA

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.

Tipo de Autorrelleno VBA

 

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».

Procedimiento Autorrelleno Copiar VBA

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:

Datos para Ejemplo xlFlashFill

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

Ejemplo xlFlashFill Rellenado

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.

Ejemplo2 xlFlashFill Rellenado

 

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

alt text

 

Más información

vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples