Eliminar filas en Excel que no cumplan una condición, largo, contenido, color

Este tip me ha ayudado a depurar bases de datos donde, por ejemplo, necesito que en la columna Número telefónico sólo haya números con un largo de 10 caracteres.

Ver video Eliminar filas que no cumplan con cierta condición

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Ver video Eliminar filas que no cumplan con cierta condición PARTE2

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Cómo funciona

En la imagen de ejemplo tenemos una tabla con 2 columnas: NOMBRE, TELEFONO. Elegimos la celda B2 y corremos la siguiente macro:

Sub EliminarFilas()
'Hacemos un bucle Do While el cual se ejecutará hasta que haya una celda vacía
Do While ActiveCell.Value <> ""
    'La condición es que si el largo es diferente a 10...
    If Len(ActiveCell) <> 10 Then
        '... elimina la fila
        ActiveCell.EntireRow.Delete
        ActiveCell.Offset(-1, 0).Select
    Else
    End If
    'Recorre una fila hacia abajo
    ActiveCell.Offset(1, 0).Select
Loop
End Sub

Resultado

Sólo quedarán las filas donde haya habido números a 10 dígitos

image

Otras condiciones

La macro anterior tiene la siguiente línea la cual es la que condiciona el largo de la celda.

If Len(ActiveCell) <> 10 Then

Pero también puede ser que queramos condicionar contenido o formato de la celda.

Ejemplos de otras codiciones:

'Eliminia diferente a largo de 10
If Len(ActiveCell) <> 10 Then

'Elimina diferentes a 1234567890
If ActiveCell.Value <> "1234567890" Then

'Eliminar los que tengan fondo rojo
If ActiveCell.Interior.ColorIndex = 3 Then

'Eliminar que comiencen con ABC""
If Mid(ActiveCell.Value, 1, 3) = "ABC" Then

Descarga el archivo de ejemplo

Eliminar filas con cierta condición – EXCELeINFO.zip

 

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

You may also like...

10 Responses

  1. AngelM says:

    muchas gracias por la asesoria, me ayudaste mucho =)!!!

  2. tecno says:

    Tengo una hoja llamada Mat1 que ha sido generada por una macro, pero me crea filas con el contenido “Este estándar de aprendizaje no ha sido seleccionado para evaluar este trimestre” y quiero eliminarlas

    ¿Cómo puedo eliminar dichas filas?. Pueden poner el código entero, porque no acierto. Ver enlace de las filas a eliminar.

    https://www.dropbox.com/s/5eihaca4cxwdrxq/eliminar_filas.jpg?dl=0

  3. Hola, muy buena macro! Se puede descargar este archivo?

  4. AngelM says:

    Hola!!! tengo un porblema con el codigo…..

    use un formato condicional para cambiar el fondo de las celdas a rojo…. pero al momento de correr la macro no pasa nada, solo cuando cambio manualmente el fondo de la celda

    otra consulta que tengo:

    como puedo eliminar una celda en ves de toda la fila??

    espero me puedas ayudar

  5. Sergio Alejandro Campos says:

    El color de formato coindicional no es color de celda como tal, por lo que no se puede reconocer con la macro. Te sugiero el siguiente artículo para colorear las celdas mediante macros y simulando un formato condicional: http://blogs.itpro.es/exceleinfo/2011/04/25/formato-condicional-ms-de-3-condiciones-en-excel-2003/

    Con respecto a eliminar la celda y no la fila puedes utilizar: ActiveCell.Delete Shift:=xlUp

  6. AngelM says:

    Muchas gracias por la respuesta!!

    disculpa que te vuelva a molestar, pero tengo otra pregunta,
    esto solo funciona en una columna de datos pero tengo varias columnas, como puedo hacer para que cuando llegue al ultimo registro de una columna se pase a la siguiente y asi sucesivamente

  7. Sergio Alejandro Campos says:

    Aquí ya cambia el método de eliminar. Con las siguientes macros debes indicar qué rango quieres que se evalúe para eliminar las celdas.

    Si deseas eliminar las rojas:

    Sub EliminiarRojas()
    For Each Celda In Range("A1:D10")
    If Celda.Interior.Color = vbRed Then
    Celda.Delete Shift:=xlUp
    End If
    Next Celda
    End Sub

    Si deseas eliminar las que tengan 1:


    Sub EliminarUnos()
    For Each Celda In Range("A1:D10")
    If Celda.Value = 4 Then
    Celda.Delete Shift:=xlUp
    End If
    Next Celda
    End Sub

    Con estas macros ya podrás adecuar a tus necesidades.

  1. October 15, 2012

    […] Eliminar filas en Excel que no cumplan una condición, largo, contenido, color […]

  2. June 6, 2013

    […] […]

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: