Filtrar 0 en excel 2007 con macro

Se que es algo muy básico, pero el tema es que necesito filtrar un rango de celdas en el cual los valores pueden variar desde "0" hasta 500, unicamente necesito quitar el 0.
Yo había creado un macro con la grabadora, quedando así:(Los valores como "Ñ25]O" son de código de Barras,)

Sub FILTRARN2()
'
' FILTRARN2 Macro
'
'
 ActiveSheet.Range("$F$7:$J$69").AutoFilter Field:=3, Criteria1:=Array("1", _
 "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "2", "20", "21", "22", "23", "24", _
 "25", "26", "27", "28", "29", "3", "30", "4", "5", "6", "7", "8", "9", "Ñ10RÓ", "Ñ11TÓ", _
"Ñ12Ó", "Ñ12VÓ", "Ñ13XÓ", "Ñ14ZÓ", "Ñ15\Ó", "Ñ16^Ó", "Ñ17`Ó", "Ñ18bÓ", "Ñ19dÓ", "Ñ20SÓ", _
 "Ñ21UÓ", "Ñ22WÓ", "Ñ23Ó", "Ñ23YÓ", "Ñ24[Ó", "Ñ25]Ó", "Ñ26_Ó", "Ñ27aÓ", "Ñ28cÓ", "Ñ29eÓ", _
 "Ñ30TÓ", "Ñ34Ó", "Ñ45Ó", "Ñ56Ó", "Ñ67Ó", "Ñ78Ó", "Ñ89Ó", "Ñ9:Ó"), Operator:= _
 xlFilterValues
End Sub

Como te darás cuenta unicamente me filtra hasta N numero en este caso 29,pero yo necesito que sea 500.

1 Respuesta

Respuesta
1

Espero haber entendido bien, ¿El filtro que quieres aplicar te dejará todos los valores diferentes de cero verdad?

Mencionas que quieres quitar el cero, ¿Quieres eliminar la fila o columna que contenga valor cero?

Si así es la forma mas fácil sería esta:

Esta macro revisa a partir de A1 si la celda tiene valor igual a cero,

Si así es borra la Fila completa, en caso que el valor sea diferente de cero

Sigue recorriendo las filas de la columna "A" hasta que encuentra una celda vacía,

Si encuentra la celda vacía termina el código.

Sub E_Fila_cero()

Range("A1").Select
Range("A1").Activate
While ActiveCell.Value <> ""
If ActiveCell.Value = 0 Then
Selection.EntireRow.Delete
ActiveCell.Offset(1, 0).Activate
Else
ActiveCell.Offset(1, 0).Activate
End If
Wend

End Sub

Muchas gracias Master, agradezco mucho tu pronta respuesta, pero el tema es que no deseo eliminar las filas sino filtrarlas ,esto debido a que son campos formulados ejemplo:

Si en A1 tengo en este caso el No.4157(Números cargados de base de datos)

Los campos f9,g9,h9, cambian de acuerdo a el valor de A1

Los campos f10,g10,h10, cambian de acuerdo a el valor de A1

Los campos f11,g11,h11, cambian de acuerdo a el valor de A1

Los campos f12,g12,h12, cambian de acuerdo a el valor de A1

De las celdas H9:H69 contienen los datos que pueden variar de 0 hasta "por" numero mismos que deseo filtrar cada vez que cambien el valor de A1.

Te anexo la hoja con la que actualmente estoy elaborando, agradecería me pudieras ayudar.

https://www.dropbox.com/s/33ho6sbguiw7xhn/EJEMPLO%20PARA%20TODO%20EXPERTOS.xlsm

Nota:Al modificar la Sucursal (I5) se modifican los códigos de barras,descripción y piezas enviadas a esa sucursal. IMPRIMO y modifico nuevamente Sucursal.

Espero lo puedas entender mas con el ejemplo.

Saludos.

Aun no me ha quedado claro, necesitaría un ejemplo con unos cuantos números de como tiene que quedarte lo que estas haciendo, esta muy interesante la hoja que me has mando y como has manejado esos código (símbolos)...

Pero bueno, unicamente atendiendo a que siga con los números desde el 1 hasta el 500, solo se me ocurre de esta manera:

Usamos un Do while, lo que hago así es que se ejecute la macro, desde i=1, hasta i = 501, para que alcance a hacerse el i = 500

La macro se ejecuta 500 veces básicamente...

Saludos y espero que te sirva, de cualquier forma aquí seguimos.

Sub FILTRARN3()
'
' FILTRARN2 Macro
'
'
i = 1
Do While i < 501
 ActiveSheet.Range("$F$7:$J$69").AutoFilter Field:=3, Criteria1:=Array(i, "Ñ10RÓ", "Ñ11TÓ", _
"Ñ12Ó", "Ñ12VÓ", "Ñ13XÓ", "Ñ14ZÓ", "Ñ15\Ó", "Ñ16^Ó", "Ñ17`Ó", "Ñ18bÓ", "Ñ19dÓ", "Ñ20SÓ", _
 "Ñ21UÓ", "Ñ22WÓ", "Ñ23Ó", "Ñ23YÓ", "Ñ24[Ó", "Ñ25]Ó", "Ñ26_Ó", "Ñ27aÓ", "Ñ28cÓ", "Ñ29eÓ", _
 "Ñ30TÓ", "Ñ34Ó", "Ñ45Ó", "Ñ56Ó", "Ñ67Ó", "Ñ78Ó", "Ñ89Ó", "Ñ9:Ó"), Operator:= _
 xlFilterValues
i = i + 1
Loop
End Sub

Agradezco tu interés, y tu respuesta , pero al ejecutar un Do While , tantas veces se hace muy lenta mi computadora.

Como puedes ver es una hoja que uso para mi trabajo como lista de empaque,Usandola asi

como consecuencia modifico la sucursal,filtro,ajusto margenes de impresión si se requiere,imprimo,y otra vez,así unas 170 veces(sucursales) para cada pedido por x numero de pedidos pufff. se vuelve muy hostigoso y lento , por eso busco automatizar un poco mas el proceso con el uso de macros.

Creo que no soy bueno explicando lo que necesito (aunque lo intento) ,y creo es algo sencillo:En un rango determinado aplicar filtro inteligente y unicamente ocultar el valor "0"

No eliminar las filas, solo ocultar las filas en las que la celda tenga 0

Sigo atento,saludos¡

Entiendo lo que dices de que se haga lenta la computadora,

Pero pues de otra forma sería meter una función if y un for, que hagan lo mismo que el

Do while.

Quizás puedes evitar que se vea el proceso en pantalla nada más

Pero de todos modos tu computadora parecerá que esta trabada por un

Momento por que esta realizando un proceso con muchos datos, eso no lo podrás evitar

Pero reduce un poco el tiempo del proceso de la macro

solo pon esta linea antes de i=1

Application.ScreenUpdating = False

Lo que hace es no refrescar la pantalla automáticamente mientras se ejecuta la macro

Solo actualiza hasta que haya terminado de ejecutarse toda.

Muchas gracias, agradezco tu atención,al final opte por agregar valores a mi macro con el que estaba filtrando.

el Application.ScreenUpdating = False me fue de gran ayuda, no solo para ese , si no para otros macros .

ME DOY POR BIEN SERVIDO ,GRACIAS¡¡¡

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas