valor una texto segun para modificar macro las formato filtrar filas eliminar demas datos cumple copiar contiene condicional condicion con como cierto celdas celda excel vba excel-vba excel-2010 excel-2007

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!

http://i39.tinypic.com/5ano1d.png


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.


Me gustaría agregar a la respuesta de @ MBK. Aunque encontré que la respuesta de @ MBK es muy útil para resolver un problema similar, sería mejor que @MBK incluyera una captura de pantalla de cómo filtrar una columna en particular.


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":

  1. En el cuadro de diálogo Buscar y reemplazar, escriba "papel" en el cuadro Buscar.
  2. Haga clic en Buscar todo para ver una lista de celdas con "papel"
  3. 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.
  4. 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