Macro para borrar filas de acuerdo a condición

Me gustaría me ayuden con una macro que borre las filas que de acuerdo a la columna A no sean fecha (hay celdas vacías y otras con letras)como se ve en la imagen, el rango comenzaría en A4 pero no sabría en cual finaliza ya que varia de acuerdo al mes

1 Respuesta

Respuesta
1

. 10/08/16

Buenas noches, Wilson

Esta es la rutina que hace lo que solicitas, independientemente de la cantidad de filas que tengas en tu base.

Accede al Editor de VBA (Atajo: Alt + F11), inserta un módulo - si no tuvieras uno ya- y pega el siguiente código:

Sub NoDeleFecha()
'Wilson, cambia aqui la columna donde están las fechas, si fuese otra:
Colfecha = "A"
UltFila = ActiveSheet.UsedRange.Rows.Count
For LaFila = UltFila To 1 Step -1
    LaCelda = Colfecha & LaFila
    If Not IsDate(Range(LaCelda)) Then Range(LaCelda).EntireRow.Delete
Next
End Sub

Listo, la macro NoDeleFecha eliminará todas las filas que no tengan una fecha en la columna A.

Un consejo sano. Tratándose de una rutina que ELIMINA filas, recomiendo fuertemente que la pruebes en una copia de la hoja original y habiendo grabado antes el archivo.

Recuerda que la opción deshacer no guarda lo que ejecuta Visual Basic for Appplications.

Espero haberte ayudado.

Un abrazo

Fernando.

Pd: Aguante Independiente del Valle! ;)

(Buenos Aires, Argentina)

.

Muchas gracias Fernando, la probé y funciono lo único es que la hoja tiene un encabezado y también me lo borro, no habría forma de que empiece desde A4 a eliminar las filas si no es fecha

Saludos...

.

Buenas, Wilson

Sí, había pensado que tu hoja tendría encabezados, pero vi que no era así en el ejemplo que enviaste.

De todos modos, una simple modificación en los parámetros evitará que lo elimine.

En la línea que dice:

For LaFila = UltFila To 1 Step -1

Hay que cambiar el To 1 a To 2, si tuvieras una sola línea de encabezados. Si tuvieras más lineas modifica ese valor para que se detenga antes.

Quedaría como sigue:

Sub NoDeleFecha()
'Wilson, cambia aqui la columna donde están las fechas, si fuese otra:
Colfecha = "A"
UltFila = ActiveSheet.UsedRange.Rows.Count
For LaFila = UltFila To 2 Step -1
    LaCelda = Colfecha & LaFila
    If Not IsDate(Range(LaCelda)) Then Range(LaCelda).EntireRow.Delete
Next
End Sub

Ojalá quede como deseas. En tal caso recuerda valorar esta respuesta para que no quede pendiente.

Un abrazo!

Fernando

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas