Macro eliminar fila según condición de celda

Me gustaría una macro que elimine toda una fila según valor de una celda de esa fila.
Concretamente:
A partir de columna C9 que la macro me recorra todas las celdas de esa columna y que las celdas que tengan valor menor que 3 pues que se borre su fila correspondiente.
Nota: No se hasta dónde va a llegar la columna C.
Respuesta
2

La manera más eficiente de hacer lo que pides es a través de un filtro por ejemplo, estas instrucciones sin importar si la columna C tiene 10 o un millón de datos se adapta a lo que tengas y lo filtra

Sub BORRAR_MENORESA3()
Application.DisplayAlerts = False
With Range("C9").CurrentRegion
    .AutoFilter
    .AutoFilter 3, "<3"
    .Offset(1).Delete
    .AutoFilter
End With
Application.DisplayAlerts = True
End Sub

3 respuestas más de otros expertos

Respuesta
1
Private Sub CommandButton1_Click()
Range("C9").Select
Do While Not IsEmpty(ActiveCell)
If ActiveCell < 3 Then
Selection.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub
Te borrara las filas con esa condición hasta llegar a la ultima fila donde no haya datos
Gracias por tu pronta respuesta. Casi me ha servido:
El problema es que puede haber datos salteados, es decir, celdas vacías, celdas con un 4 celdas con un 2... etc y todas mezcladas incluyendo las vacías.Al final solo me deben quedar las menores de 3
Gracias de nuevo
OK
Entonces prueba esto
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Range("C9").Select
i = 9
fin = ActiveSheet.Range("C65500").End(xlUp).Row
For i = 9 To fin
If Cells(i, 3) < 3 Or Cells(i, 3) = "" Then
Cells(i, 3).Select
Selection.EntireRow.Delete
End If
Next i
Application.ScreenUpdating = True
End Sub
Hola experto. Gracias de nuevo.
Efectivamente ahora funciona.Lo que ocurre es que debo hacer 2 veces clic en el botón para que me lo filtre todo correctamente. ¿A qué se puede deber?
Gracias
Algo estas haciendo mal. Revísalo a ver.
Eso como bien lo puedes ver se ejecuta es con el Click del botón.
Yo lo probé y funciona.
Respuesta
1
He aquí un código que te puede ser útil. Al respecto solo he de mencionarte que debes lanzar la macro desde la celda inicial para el análisis, en tu caso la celda C9. Espero te sirva, me avisas si anda. Saludos
***************************************************************
Sub EliminarMenores()
''Creada por FSerrano ([email protected]) en 110627 para fefemo en TodoExpertos.com
''Elimina los registros menores al criterio ingresado, realizando la comparación con la columna C
'Solicita el criterio
menor = InputBox("Se eliminaran los registro menores o iguales a:", "CRITERIO", 3) * 1
'Captura la posición inicial para volver a ella al final de proceso
inicio = ActiveCell.Address
'Va a la ultima fila de la columna C
Cells(ActiveSheet.Rows.Count, 3).Activate
'Captura el numero de fila de la ultima celda que contiene información en la columna C
ultima = Selection.End(xlUp).Row
'Vuelve al inicio
Range(inicio).Activate
'Ejecuta el ciclo de comparación mientras la fila activa sea menor a la ultima que contenga información
While ActiveCell.Row <= ultima
'Si el valor de la celda "C"FilaActual es menor a tres, elimina el registro
If Cells(ActiveCell.Row, 3).Value * 1 < menor Then
ActiveCell.EntireRow.Delete
ultima = ultima - 1
Else
ActiveCell.Offset(1, 0).Activate
End If
Wend
'Vuelve al inicio
Range(inicio).Activate
End Sub
Respuesta

Yo necesito que me borre la fila por ejemplo si la celda B1 es mayor a la celda C1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas