Filtrar una lista de excel, ya filtrada.

Tengo una macro que me ayuda a filtrar el contenido de una columna (A) de acuerdo a la información que le proporcione, en la celda A1. Ejemplo: PPRDM-R1-15023-MR. Esta macro la puedo hacer funcionar buscando cualquiera de las partes del texto anterior ( R1 ... MR... Etc). Y filtra todas las celdas que contengan esta información . Pero ahora necesito que me filtre una columna de una lista de excel, en varias ocasiones, esto para ubicar de manera más precisa el contenido de la tabla.

Para esto, necesito los campos A1, B1, C1 y D1. En A1, podremos realizar la búsqueda del primero filtro, y en B1, realizamos agudizamos el filtro de la búsqueda ya realziada y así sucesivamente. En la primer búsqueda quiero todos los campos que contengan PPRDM, del resultado que me arroje, quiero todos los que contengan PPRDM, pero que solo sean R1... Etc.

Espero haberme explicado. Cualquier duda, estoy a sus ordenes.

1

1 Respuesta

4.308.725 pts. Sancho, si los perros ladran ...

Prueba con la siguiente macro

Sub filtar4()
'Por.Dante Amor
    If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
    u = Range("A" & Rows.Count).End(xlUp).Row
    ActiveSheet.Range("A2:D" & u).AutoFilter Field:=1, Criteria1:="=*" & [A1] & "*"
    ActiveSheet.Range("A2:D" & u).AutoFilter Field:=2, Criteria1:="=*" & [B1] & "*"
    ActiveSheet.Range("A2:D" & u).AutoFilter Field:=3, Criteria1:="=*" & [C1] & "*"
    ActiveSheet.Range("A2:D" & u).AutoFilter Field:=4, Criteria1:="=*" & [D1] & "*"
End Sub

Saludos.Dante Amor

Si es lo que necesitas.

Dante, perdón una duda, ¿remplazo la macro existente por esta nueva que me acabas de enviar? ¿O se agrega en conjunto y se manda llamar? Porque de las dos maneras no me da respuesta.

Saludos.

Mi macro es un ejemplo, tendrías que adaptar mi macro a tus datos.

O pon una imagen real de cómo tienes los datos para adaptar la macro a lo que necesitas.

A continuación la macro que me enviaste, y en la imagen mostrada abajo, el filtro de A1, muestra los resultados de PABRD, a ese filtro ya hecho me gustaría aplicar el filtro de B1, que muestro los que son PABRD y FG, después a ese filtro ya hecho, que muestre solo lo que contenga C1, en este caso 5512 y se reduzca nuevamente el resultado, y por ultimo si se aplica un filtro más de D1, también aplique. Se pueden usar los 4 o solo 2, eso depende del usuario.

Espero esto te ayudo un poco más.

Saludos.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por Dante Amor

If Target.Address(False, False) = "A1" Then
If Target.Count > 1 Then Exit Sub
ActiveSheet.ListObjects("Table_owssvr").Range.AutoFilter _
Field:=1, Criteria1:="=*" & Target & "*", Operator:=xlAnd
End If
End Sub

Para filtrar más de 2 condiciones sobre la misma columna se tiene que hacer con un filtro avanzado, te anexo la macro con el filtro avanzado, reemplaza la macro anterior por esta

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    Application.ScreenUpdating = False
    If Not Intersect(Target, Range("A1:D1")) Is Nothing Then
        If ActiveSheet.FilterMode Then ShowAllData 'Selection.AutoFilter
        If Target.Count > 1 Then Exit Sub
        u = Range("A" & Rows.Count).End(xlUp).Row
        Range("AA1:AD1") = [A3]
        Range("AA2:AD2") = ""
        If [A1] <> "" Then [AA2] = "*" & [A1] & "*"
        If [B1] <> "" Then [AB2] = "*" & [B1] & "*"
        If [C1] <> "" Then [AC2] = "*" & [C1] & "*"
        If [D1] <> "" Then [AD2] = "*" & [D1] & "*"
        Range("A3:F" & u).AdvancedFilter Action:=xlFilterInPlace, _
            CriteriaRange:=Range("AA1:AD2"), Unique:=False
    End If
End Sub

Saludos.Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas