VBA – Macro para rellenar celdas en excel

Hola Freaks! En este post os traigo un pequeño truco para rellenar las celdas vacías en excel con una macro en visual basic.

En el post anterior te hablé de que tenías que hacer antes de empezar a programar en visual basic y era añadir la pestaña programador

Seguro que esta dichosa columna con celdas vacías te ha provocado mas de un quebradero de cabeza a la hora de analizar la información, o preparar una tabla dinámica.

Pues con esta pequeña macro, lo vas a solucionar inmediátamente.

Macro para rellenar celdas en excel

Partimos de la siguiente situación:

Tenemos 3 columnas (La ubicación, el vendedor y las unidades vendidas), pero como puedes ver la columna A tiene celdas vacías.

rellenar-celdas-vacias-vba-excel

Lo que vamos a hacer es, con una simple macro, crear una nueva columna.

En esa nueva columna, le vamos a preguntar si la celda de la izquierda contiene algún dato o está vacía.

Si contiene algún dato, fácil, lo rellenamos con ese dato, si no, cogemos el valor de la celda inmediatamente por encima.

Y arrastramos la fórmula hasta la última celda.

En este caso, esta tabla es estática, finaliza en la fila 14 y no va a variar, pero cuando los datos van aumentando o disminuyendo hay que calcular, cada vez que se ejecute la macro, cual es la última celda con valor, pero eso te lo explicaré más adelante.

Una vez que tengamos la nueva columna rellena con la información que necesitamos, seleccionamos dicha columna y copiamos y pegamos como valores, para así evitarnos fastidiar la fórmula y perder el dato correcto.

Una vez que ya hemos realizado ese paso, procedemos a eliminar la columna inicial que contenia las celdas vacías.

A continuación te dejo el código de la macro, con comentarios para que puedas seguirla con facilidad.

Sub RellenarCeldasVacias()

'   Codigo creado por www.excelfreak.com
'   Seleccionamos la Pestaña en la que queremos rellenar las celdas vacias, tendrás que modificarla por el nombre de tu pestaña

    Sheets("RellenarCeldas").Select
    
'   La columna en la que tenemos las celdas vacias es en la A,
'   por lo que añadimos una nueva columna, seleccionando la columna B

    Columns("B:B").Select
    Selection.Insert Shift:=xlToRight
    
'   En la celdas B2 preparamos una formula para identificar aquellas celdas vacias, rellenandolas con el valor superior.

    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""",R[-1]C,RC[-1])"
    Range("B2").Select
    
'   En este caso la última celda es estática por lo no es necesario definir la ultima celda dinámicamente.
'   Se autorellena hasta la celda B14
'   Si en tu fichero, la última celda va a ser variable, busca en www.excelfreak.com "última celda con valores" para integrar esa parte del código en éste.

    Selection.AutoFill Destination:=Range("B2:B14")
    
'   Copiamos la cabecera que teníamos en la celda A1 en la celda B1

    Range("A1").Select
    Selection.Copy
    Range("B1").Select
    ActiveSheet.Paste
    
'   Seleccionamos la columna entera B la copiamos y pegamos como valores.
    
    Columns("B:B").Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
'   Seleccionamos la columna entera A y la eliminamos

    Columns("A:A").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
    
    
'   Y de esta manera tan sencilla puedes rellenar las celdas vacías con una macro en visual basic.
End Sub


Te dejo el video del resultado que obtienes al ejecutar esta macro.

Autor entrada: Javi de Excelfreak

Deja un comentario