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
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.
muchas gracias por la asesoria, me ayudaste mucho =)!!!
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
El código siguiente:
If Len(ActiveCell) <> 10 Then
Hay que cambiarlo por:
If ActiveCell.Value = “Este estándar de aprendizaje no ha sido seleccionado para evaluar este trimestre” Then
Hola, muy buena macro! Se puede descargar este archivo?
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
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
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
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.