Realizar filtro con varios criterios que todos sean "diferente de"

Cuando en una tabla se quiere filtrar por aquellos elementos que sean igual a, p.e. Casa, coche o camión se hace:

ActiveSheet.Range("$A$6:$A$137").AutoFilter Field:=1, Criteria1:=Array("casa", "coche", "camión"), Operator:=xlFilterValues

¿Cómo puedo hacer para que filtre por aquellos que NO son casa, coche o camión, teniendo en cuenta que puedo no saber cuales son el resto de opciones? Es decir algo equivalente a cuando en un autofiltro desmarcamos manualmente casa, coche y camión para quedarnos con el resto.

3 respuestas

Respuesta
2

[Hola

Prueba algo así:

ActiveSheet.Range("$A$6:$A$137").AutoFilter Field:=1, Criteria1:= _
        "<>casa", Operator:=xlAnd, Criteria2:="<>coche"

Comentas

Abraham Valencia

Gracias Abraham por tu respuesta.

He probado y funciona solo para 2 elementos, no se puede poner Criteria3:="<>camión"

¿Has usado y/o probado usar "Filtros avanzados"?

Abraham Valencia

Respuesta
2

.
Por ejemplo así: Filtro avanzado

Saludos, Mario (Cacho) Rodríguez.

P.D.

¿Cómo estás, Abraham?...
.

.

Respuesta
2

Puedes poner en un arreglo todos los que son diferentes a "casa", "coche", "camión" y después filtrar con el arreglo resultante:

Sub filtrar()
'Por Dante Amor
    'Filtra las celdas diferentes al arreglo valores
    '
    valores = Array("casa", "coche", "camión")
    '
    Application.ScreenUpdating = False
    Dim datos()
    If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
    u = Range("A" & Rows.Count).End(xlUp).Row
    Set celdas = Range("A6:A" & u)
    For Each celda In celdas
        existe = False
        For j = LBound(valores) To UBound(valores)
            If celda.Value = valores(j) Then
                existe = True
                Exit For
            End If
        Next
        If existe = False Then
            i = i + 1
            ReDim Preserve datos(i)
            datos(i) = celda.Value
        End If
    Next
    ActiveSheet.Range("A6:A" & u).AutoFilter Field:=1, _
        Criteria1:=datos, Operator:=xlFilterValues
    Application.ScreenUpdating = True
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas