El filtrado de matrices de filtro automático solo funciona filtrando por el último criterio en la matriz.
Estoy intentando ordenar una tabla eliminando las filas que tienen su celda en la columna 9 y NO comienzan con S, X o P. A continuación se muestra el código que tengo para filtrar las filas que no cumplen con mis criterios, y luego eliminarlas, y finalmente mostrar los valores restantes.
Range("I:I").NumberFormat = "@"
lo.Range.AutoFilter Field:=9, Criteria1:=Array("<>S*", "<>X*", "<>P*"), Operator:=xlOr
Application.DisplayAlerts = False
lo.DataBodyRange.SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True
lo.AutoFilter.ShowAllData
Actualmente, sin importar el orden, solamente se mantienen las filas que contienen el último criterio en el array.
davy.ai
El código proporcionado filtra las filas que no cumplen con el criterio de tener su celda en la columna 9 que comienza con S, X o P. Sin embargo, el problema es que, independientemente del orden en que se incluyan los criterios en el array, solo se mantienen las filas que cumplen con el último criterio del array. Esto probablemente se deba al uso del operador
xlOr
en los criterios de filtrado.Para solucionar este problema, podemos modificar los criterios de filtrado para usar el operador
xlAnd
en lugar dexlOr
. Esto asegurará que solo se mantengan las filas que cumplen con los tres criterios. El código modificado se vería así:Este código debería filtrar la tabla correctamente, manteniendo solo las filas donde la celda en la columna 9 comienza con S, X o P.