Filtro Avanzado No funciona Excel

No he podido realizar el filtro avanzado de la siguiente tabla, y desconozco la razon, se supone que el Rango de la Tabla es:
A8:H180, a pesar de que lo he hecho mediante la herramienta propia de excel, la única forma en la que funciona es la siguiente:
Sub Macro4()
Range("C8:C180").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= Range("C8:C180"), Unique:=True
End Sub
Donde el Rango se establece en Range("C8:C180"), aun que debiese ser Range("A8:H180"), He considerado que podria ser por la diferencia entre los tipos de datos, pero la verdad es que desconozco las verdaderas razones.
Del Rango("A8:H180"), pretendo obtener los valores únicos de la columna "C" de dicha tabla. Agradezco su ayuda. Saludos

2 respuestas

Respuesta
1

H   o l a:

Esto que estás utilizando es correcto:

Sub Macro4()
Range("C8:C180").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= Range("C8:C180"), Unique:=True
End Sub

Es decir, al no existir criterios, lo que se está considerando, son todos los datos de la columna C, y de ahí obtener los únicos.

De hecho, podrías poner esto y te va a dejar los registros únicos según los datos de C8 a C180.

Range("C8:C180").AdvancedFilter Action:=xlFilterInPlace, Unique:=True

Si utilizas esto:

    Range("A8:H180").AdvancedFilter Action:=xlFilterInPlace, _
        CriteriaRange:=Range("C8:C180"), Unique:=True

Lo que le estás diciendo es, busca todos los datos que están en rango C8 a C180, lo que significa que va a encontrar todos, pero también le estás diciendo que quieres los registros únicos del rango A8 a H180. Aparentemente "No Funciona" porque te está poniendo todos los registros. Pero realmente Sí Funciona, ya que está filtrando todos los registros únicos desde A hasta H. Lo que hace es tomar como registro la unión de las celdas A9 a H9, y la compara con el resto de las filas, si es única, entonces la deja en el filtro avanzando, así con cada fila, si tuvieras 2 filas exactamente iguales, entonces una de ellas no la pondría en el filtro avanzado.


En pocas palabras, el primer código es correcto, solamente que no lo estás interpretando correctamente.

El parámetro de únicos funciona de esta forma, primero realiza el filtro de lo que tienes en criterios, si tienes activo "Sólo registros únicos", entonces el filtro avanzado, revisa todos los registros y obtiene los únicos, considerando el rango de A hasta H.


Otra forma de obtener los datos únicos, por ejemplo, copia la columna C o el rango a otra hoja, en la nueva hoja selecciona todos los datos, en menú Datos, presiona Quitar duplicados.


Avísame si tienes más dudas.


'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

¡Gracias!, Es la respuesta esperada, termine rrecuriendo a esta opción:

Range("A8:H180").AdvancedFilter Action:=xlFilterInPlace, _
             CriteriaRange:=Range("C8:C180"), Unique:=True

pero rresultaba imperativo, comprender por que no obtenia el rresultado deseado con el primer codigo. Saludos

Respuesta
1

.

.

Intenta con:

[q8].CurrentRegion.Delete xlShiftUp
Range("c8", [c8].End(xlDown)).AdvancedFilter 2, "", [q8], True
[q8].CurrentRegion.Sort [q8], 1, Header:=1

.

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas