Ocultar filas que no cumplan una condición

06/02/2009 - 19:54 por Manuel Montes | Informe spam
Buenos días a todos/as:

Tengo una hoja con unas 100 filas en las que la columna B tiene un NO
o un SI. Lo único que quiero es que me oculte (no filtre, sino oculte)
todo aquello que tiene NO.

La estructura es tal que

REFERENCIA | IMPRIMIR | DESCRIPCION | IMPORTE

TJS | SI | Tarjetas plásticas
| 500
COM | NO | Comisión intermediario | 100
AUX | SI | Material
Auxiliar | 150

Yo me he planteado un bucle tal que:


Do While ActiveCell.Value <> Empty
If ActiveCell.Value = "NO" Then
Selection.EntireRow.Hidden = True
End If
ActiveCell.Offset(1, 0).Select
Loop

El problema es que para 50 líneas, no se por qué razón, me tarda más
de un minuto, y necesito que sea un proceso más rápido.

Alguien me podría ayudar como hacer la selección múltiple de filas de
forma múltiple.
 

Leer las respuestas

#1 Héctor Miguel
07/02/2009 - 04:52 | Informe spam
hola, Manuel !

- la tabla que expones se habria "visto" mejor si en su lugar comentas los rangos donde esta ubicada ;)

- los bucles que realizan "acciones" FILA-x-FILA causan lentitud y son (generalmente) innecesarios -?-

- si suponemos que los SI/NO estan en la columna B (fila 1 como titulos) y los datos inician en la fila 2...
prueba con algo +/- como lo siguiente:

Sub Oculta_SI()
Dim Fila As Integer, Rango As String
For Fila = 2 To Range("b65536").End(xlUp).Row
If Range("b" & Fila) = "SI" Then Rango = Rango & ",a" & Fila
Next
If Rango <> "" Then Range(Mid(Rango, 2)).EntireRow.Hidden = True
End Sub

es probable que debieras primer mostrar cualquier fila que se hubiera ocultado con anterioridad -???-

saludos,
hector.

__ OP __
Tengo una hoja con unas 100 filas en las que la columna B tiene un NO o un SI.
Lo unico que quiero es que me oculte (no filtre, sino oculte) todo aquello que tiene NO.
La estructura es tal que
REFERENCIA | IMPRIMIR | DESCRIPCION | IMPORTE
TJS | SI | Tarjetas plasticas | 500
COM | NO | Comision intermediario | 100
AUX | SI | Material Auxiliar | 150

Yo me he planteado un bucle tal que:
Do While ActiveCell.Value <> Empty
If ActiveCell.Value = "NO" Then
Selection.EntireRow.Hidden = True
End If
ActiveCell.Offset(1, 0).Select
Loop

El problema es que para 50 lineas, no se por que razon, me tarda mas de un minuto
y necesito que sea un proceso mas rapido.
Alguien me podria ayudar como hacer la seleccion multiple de filas de forma multiple.

Preguntas similares