Macro eliminar filas que no comienzan con número

Hola experto
He estado todo el día tratando de generar una macro que me permita limpiar una tabla que me llega desde otra parte de la empresa. Esta tabla me llega con un encabezado, que siempre tiene el mismo largo, y con una serie de registros, que varían mensualmente según la cantidad de sucesos ocurridos.
Cada registro utiliza 2 filas, pero sólo la 1a es relevante para mi. La primera fila de cada registro comienza con un número, mientras que la segunda tiene la celda vacía.
El problema está en que cada cierto (la cantidad de registros entre cada una varía) tiempo hay una celda resumen, que es una celda combianda de todo el ancho de la tabla y que contiene texto. No he sido capaz de eliminar todas estas filas de resumen.
Tampoco he logrado eliminar las últimas 3 filas, ya que para parar el loop hago que, al identificar una de las últimas filas (que es siempre la misma), elimine esa y las 3 siguientes, pero sólo le elimina 2 (saltadas).
Este es el código en el que he estado trabajando:
Sub eliminarfilas()
'
' eliminarfilas Macro
'
' Acceso directo: CTRL+e
'
Range("1:8").Select
Selection.Delete Shift:=xlUp
For fila = 1 To 65536
If Cells(fila, 1).Value = "" Or Cells(fila, 1).Value = "Total equipo: [1] CAJA MANUAL" Or Cells(fila, 1).Value = "Equipo: [2] AUTOPAGO (1)" Or Cells(fila, 1).Value = "Total equipo: [2] AUTOPAGO (1)" Or Cells(fila, 1).Value = "Equipo: [3] AUTOPAGO (2)" Or Cells(fila, 1).Value = "Total equipo: [3] AUTOPAGO (2)" ThenRows(fila).Delete
If Cells(fila, 1).Value = "Area total: [1] PARKING" Then
Rows(fila).Delete
Rows(fila + 1).Delete
Rows(fila + 2).Delete
Rows(fila + 3).Delete
fila = 65535
End If
End If
Next fila
End Sub
Básicamente, lo que necesito es una macro que elimine las filas que no tienen en su primera celda un número (es decir, que tienen nada o un texto combinado con otras celdas).
Gracias!

1 respuesta

Respuesta
Veamos con un ejemplo lo que sucede al eliminar la 1ra celda. Supongamos que fila = 30, entonces con el 1er If, se elimina la fila 30 quedando seleccionada la siguiente, que también es 30.
Entonces evalúas con el 2do if. Si es Área total: 1PARKING se ejecutan estas líneas:
Rows(fila).Delete           'elimina fila 30
Rows(fila + 1). Delete     'elimina fila 31   (pero esta ocupa el lugar 30 ahora, porlo que te queda sin eliminar
Rows(fila + 2).Delete
Rows(fila + 3).Delete
Entonces las líneas luego del 2do If son así:
Rows(fila).Delete    'elimina la 1ra, la del texto
Rows(fila).Delete    'elimina la 2da
Rows(fila).Delete    'elimina la 3ra
Rows(fila).Delete    'elimina la 4ta
o lo que es lo mismo con un bucle:
for i = 1 to 4
Rows(fila).Delete   
next i
Sdos y no olvides finalizar la consulta

Añade tu respuesta

Haz clic para o