ELIMINAR FILAS VACÍAS SI TODAS LAS CELDAS DEL RANGO ESTÁN EN BLANCO

Hola a todos!

En el post de hoy voy a responder a un lector la siguiente consulta relacionada con este antiguo post: ELIMINAR FILAS VACÍAS CON VBA EN EXCEL

Esta es la consulta: “Gracias por Compartir. Está excelente. La ejecuté y funciona perfecto para rangos cuyas filas vacías están definidas desde la columna “A”. Pero, ¿cómo hacer para eliminar filas vacías cuando en un rango, por ejemplo desde Columna A hasta Columna BH, tengo columnas que contienen datos, es decir no están “totalmente vacías”, es decir quiero eliminar sólo Filas “totalmente vacías”.
Nuevamente, Gracias! y feliz 2020!”

Pues bien, ayer propuse la siguiente solución:

Option Explicit
Sub ELIMINAR_FILAS_VACIAS()
'Declaramos variables
Dim Fin As Long, i As Long
Dim fila As String, rFila As String
Dim sFilas As String, Control As Long
With ActiveSheet
'Detectamos última columna con datos por cada fila
Fin = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To Fin
'Si la suma de la fila es igual a cero,está vacía
Control = Application.CountA(.Range("A" & i & ":" & "BH" & i))
'Control = Application.CountA(.Range(i & ":" & i))

If Control = 0 Then
'Componemos rango de filas con un arraystring
fila = i & ":" & i
rFila = rFila & "," & fila
End If
Next i
'Seleccionamos todas las filas detectadas y las eliminamos
sFilas = Mid(rFila, 2, Len(rFila))
If sFilas <> vbNullString Then
Range(sFilas).Select
Selection.Delete
End If
End With
End Sub

Este código funciona correctamente hasta un determinado límite, en concreto los 255 caracteres como límite a la hora de componer el arraystring. Aunque normalmente trato de verificar estas limitaciones antes de publicar un post, lo cierto es que ha sido un lector de LinkdIn: Tomasz Władysław Głuszkowski quien me advirtió del problema (Muchas gracias!)

Por eso, voy a proponer otro código distinto:

Option Explicit
Sub ELIMINAR_FILAS_VACIAS()
'Declaramos variables
Dim r As Long
Dim Control As Long
With ActiveSheet
'Iniciamos loop
r = 1
Do Until r = .Cells(Rows.Count, 1).End(xlUp).Row
Control = Application.CountA(.Range(Cells(r, 1).Row & ":" & Cells(r, 1).Row))
'Control = Application.CountA(.Range("A" & Cells(d, 1).Row & ":" & "BH" & Cells(d, 1).Row))
'Si variable control es 0 entonces eliminamos fila
If Control = 0 Then
Rows(r).Delete
Else
'Si no es 0 seguimos con la fila siguiente
r = r + 1
End If
Loop
End With
End Sub

En esencia realiza la misma función aunque utilizamos un loop do – until para eliminar las filas, en lugar de componer el array y seleccionar el rango.

Por ejemplo, tenemos este listado, en verde he marcado las filas que debe desaparecer:

ELIMINAR FILAS VACÍAS SI TODAS LAS CELDAS DEL RANGO ESTÁN EN BLANCO

Y este es el resultado:

ELIMINAR FILAS VACÍAS SI TODAS LAS CELDAS DEL RANGO ESTÁN EN BLANCO_1

Y eso es todo, espero que la respuesta sea de utilidad!.

Descarga el archivo de ejemplo pulsando en: ELIMINAR FILAS VACÍAS SI TODAS LAS CELDAS DEL RANGO ESTÁN EN BLANCO

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Un pensamiento en “ELIMINAR FILAS VACÍAS SI TODAS LAS CELDAS DEL RANGO ESTÁN EN BLANCO

  1. Pingback: ELIMINAR FILAS VACÍAS SI TODAS LAS CELDAS DEL RANGO ESTÁN EN BLANCO PARTE II | EXCEL SIGNUM

¿Te ha gustado?, Realiza un comentario.

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .