6 febrero, 2025

RELLENAR RANGO DE CELDAS VACÍAS CON EL VALOR DE LA CELDA SUPERIOR

Hoy voy a tratar un tema que, aunque pueda parecer menor, no es la primera vez que me lo encuentro cuando realizo trabajos o informes.

El problema surge cuando trabajamos con datos de una tabla dinámica que han sido pegados en una hoja como valores y es necesario rellenar las filas en blanco con el dato de la celda superior que contenga información.

Un ejemplo podría ser este:

RELLENAR RANGO DE CELDAS VACÍAS CON EL VALOR DE LA CELDA SUPERIOR

Es decir, en aquellas celdas que se encuentran en blanco rellenarlas con el dato correspondiente, licenciado, diplomado, etc.

Para hacer este trabajo, podemos hacerlo o bien con macros o bien utilizando funciones de la hoja Excel.

Si queremos hacerlo manualmente con funciones:  nos posicionamos en una celda de la columna que contiene las celdas en blanco, a continuación, (sin dejar de seleccionar la celda), vamos a la pestaña de INICIO > BUSCAR Y SELECCIONAR > IR A ESPECIAL:

RELLENAR RANGO DE CELDAS VACÍAS CON EL VALOR DE LA CELDA SUPERIOR2

y marcamos la opción «Celdas en Blanco«:

RELLENAR RANGO DE CELDAS VACÍAS CON EL VALOR DE LA CELDA SUPERIOR3

Ahora que tenemos las celdas en blanco seleccionadas, (y deben seguir seleccionadas):

RELLENAR RANGO DE CELDAS VACÍAS CON EL VALOR DE LA CELDA SUPERIOR4

Nos situamos en la barra de fórmulas y tecleamos =A2 que se corresponde con la última fila con datos y pulsamos CONTROL + INTRO.

RELLENAR RANGO DE CELDAS VACÍAS CON EL VALOR DE LA CELDA SUPERIOR5

El resultado es el siguiente:

RELLENAR RANGO DE CELDAS VACÍAS CON EL VALOR DE LA CELDA SUPERIOR6

Pero si por alguna razón necesitamos realizar esta tarea con una macro, por ejemplo para automatizar un proceso, lo podemos hacer con dos métodos diferentes, que en realidad hacen lo mismo.

La primera macro (METODO1) realiza los mismos pasos que hemos hecho manualmente, y además deja los datos como valores, sin la fórmula:

Sub Metodo1()
'Defininimos variables
Dim Fin%, x%, Rng%
With Sheets("Hoja1")
'Grabamos longitud del rango y contamos celdas en blanco
Fin = Application.CountA(.Range("B:B"))
x = WorksheetFunction.CountBlank(Range("A2:A" & Fin))
'Si hay celdas en blanco
If x > 0 Then
'Seleccionamos celdas en blanco
.Range("A2:A" & Fin).SpecialCells(xlCellTypeBlanks).Select
'Aplicamos fórmula en cada celda, hace referencia al valor anterior
Selection.FormulaR1C1 = "=R[-1]C"
'Seleccionamos todo el rango y lo pasamos a valores
Rng = Application.CountA(.Range("A:A"))
.Range("A2:A" & Rng).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End If
End With
End Sub

La segunda macro (METODO2) es mucho más sencilla y realiza el trabajo mediante un loop haciendo referencia a la última celda con datos:

Sub Metodo2()
'Definimos variables
Dim i%, Fin%
With Sheets("Hoja2")
Fin = Application.CountA(.Range("B:B"))
'Mediante un bucle indicamos que si una celda está vacía
'el valor sea el de la celda anterior.

For i = 2 To Fin
If .Cells(i, 1) = "" Then .Cells(i, 1) = .Cells(i - 1, 1)
Next
End With
End Sub

Con las dos códigos obtendremos el mismo resultado. También debemos tener en cuenta la primera opción (manual) que para casos concretos es la más rápida y eficaz.

Descarga el archivo de ejemplo pulsando en: RELLENAR RANGO DE CELDAS VACÍAS CON EL VALOR DE LA CELDA SUPERIOR

Comparte este post

7 comentarios en «RELLENAR RANGO DE CELDAS VACÍAS CON EL VALOR DE LA CELDA SUPERIOR»

  1. Buena idea, pero hay algo muy sencillo, Ponemos filtros en la fila 1 y en la celda A3 ponemos =A2, copiamos esa celda y filtramos la columna A por celdas vacias, pegamos en el resto de las celdas de la columna A y desfiltramos, si queremos conservar esos datos fijos , simplemente seleccionamos la columna A, copiamos y pegamos especial valor.

  2. Justo lo que estaba buscanco, Gracias mil SEgu, esto lo acabo de preguntar en otro post tuyo; y en hora buena, lo empiezo a adecuar a mi archivo de revisión y concentracion de datos, Saludos!!

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies