excel - una - Eliminar toda la fila si la celda contiene la cadena X
macro para filtrar y eliminar filas (6)
En la "pestaña Desarrollador", vaya a "Visual Basic" y cree un módulo. Copie y pegue lo siguiente. Recuerde cambiar el código, según lo que desee. Luego ejecuta el módulo.
Sub sbDelete_Rows_IF_Cell_Contains_String_Text_Value()
Dim lRow As Long
Dim iCntr As Long
lRow = 390
For iCntr = lRow To 1 Step -1
If Cells(iCntr, 5).Value = "none" Then
Rows(iCntr).Delete
End If
Next
End Sub
lRow: ingrese el número de filas que tiene el archivo actual.
El número "5" en el "Si" es para la quinta columna (E)
Soy nuevo en VBA y estoy tratando de encontrar una manera de eliminar todas las filas (y mover las celdas hacia arriba, si es posible) donde la celda de la columna del sitio web contiene la palabra none
. La tabla contiene más de 5000 registros y esto me ahorraría una gran cantidad de tiempo.
Agradezco cualquier sugerencia. ¡Muchas gracias de antemano!
Esta no es una tarea de VBA: esta tarea específica se soluciona más fácilmente con el filtro automático.
1.Insertar filtro automático (En Excel 2010, haga clic en Inicio-> (Edición) Ordenar y filtrar -> Filtro)
2. Filtrar en la columna ''Sitios web''
3. Marque el ''ninguno'' y elimínelos
4. Borrar el filtro
Esto fue aludido en otro comentario, pero podrías intentar algo como esto.
Sub FilterAndDelete()
Application.DisplayAlerts = False
With Sheet1 ''Change this to your sheet name
.AutoFilterMode = False
.Range("A3:K3").AutoFilter
.Range("A3:K3").AutoFilter Field:=5, Criteria1:="none"
.UsedRange.Offset(1, 0).Resize(ActiveSheet.UsedRange.Rows.Count - 1).Rows.Delete
End With
Application.DisplayAlerts = True
End Sub
No he probado esto y es de memoria, por lo que puede requerir algunos ajustes, pero debe hacer el trabajo sin pasar por miles de filas. Tendrá que eliminar el 11 de julio para que UsedRange
sea correcto o cambie el desplazamiento a 2 filas en lugar de 1 en .Offset(1,0)
.
En general, antes de hacerlo. .Delete
ejecutaré la macro con .Select
lugar de Eliminar de esa manera, puedo estar seguro de que se eliminará el rango correcto, que puede valer la pena verificar para asegurarse de que se borre el rango apropiado.
Ok, esto lo sé por VBA, pero si necesitas hacer esto para una eliminación masiva de una vez, puedes usar la siguiente funcionalidad de Excel: http://blog.contextures.com/archives/2010/06/21/fast-way-to-find-and-delete-excel-rows/ Espero que esto ayude a cualquiera
Ejemplo que busca la cadena "papel":
- En el cuadro de diálogo Buscar y reemplazar, escriba "papel" en el cuadro Buscar.
- Haga clic en Buscar todo para ver una lista de celdas con "papel"
- Seleccione un elemento de la lista y presione Ctrl + A para seleccionar toda la lista y seleccionar todas las celdas de "papel" en la hoja de trabajo.
- En la pestaña Inicio de la cinta de opciones, haga clic en Eliminar y luego en Eliminar filas de hoja.
Prueba esto ...
Dim r as Range
Dim x as Integer
For x = 5000 to 4 step -1 ''---> or change as you want //Thanx 4 KazJaw
set r = range("E" & format(x))
if ucase(r.Value) = "NONE" then
Rows(x).EntireRow.Delete
end if
Next