Autofiltro con más de dos condiciones
El autofiltro en Excel VBA permite solamente dos criterios. El siguiente código muestra cómo se pueden utilizar tres o más criterios con el autofiltro:
Sub MultiFiltro()
Dim rngTarget As Range, rng1 As Range, rng2 As Range, rngMyRange As Range
Const Crit1 As String = "DEF, LLC"
Const Crit2 As String = "FGH LTD."
Const Crit3 As String = "QRS INC."
'Los criterios de autofiltro a utilizar
Application.ScreenUpdating = False
With Worksheets("Hoja1")
.Rows(1).Insert
.Range("A1").Value = "dummy"
'Establecer un encabezado
Set rngTarget = .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
'Establecer el rango de trabajo
rngTarget.AutoFilter Field:=1, Criteria1:=Crit1, Operator:=xlOr, Criteria2:=Crit2
'Obtener los primeros dos criterios
Set rng1 = .AutoFilter.Range.Offset(1, 0).Resize(.AutoFilter.Range.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
'rango con los primeros dos (utilizar Offset y cambiar el tamaño para excluir el encabezado)
rngTarget.AutoFilter
'Restablecer Autofiltro
rngTarget.AutoFilter Field:=1, Criteria1:=Crit3
'Obtener el tercer criterio
Set rng2 = .AutoFilter.Range.Offset(1, 0).Resize(.AutoFilter.Range.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
'Rango con el tercero
rngTarget.AutoFilter
.Rows(1).Delete
'Eliminar el encabezado
Set rngMyRange = Union(rng1, rng2)
'Combinar el rango
rngMyRange.EntireRow.Copy Destination:=Worksheets("AF Results").Range("A2")
'o cualquier cosa que quieras hacer ...
End With
Worksheets("Hoja2").Select
Application.ScreenUpdating = True
MsgBox "Filtro completado"
End Sub
Si te ha parecido interesante, comparte: Compartir
