Contar valores únicos respetando filtros manuales: SUBTOTALES + MAP al rescate

Miki lanza una pregunta que parece sencilla pero esconde un buen reto: ¿cómo contar valores únicos en una columna cuando hay filtros manuales aplicados a la tabla? La función AGREGAR no tiene equivalente a "contar únicos", y las soluciones típicas con UNICOS o CONTAR.SI ignoran los filtros.

Nacho sugiere la línea de ataque: añadir una columna que controle la visibilidad de cada fila con SUBTOTALES y luego UNICOS con FILTRAR sobre esa columna. A partir de ahí, la comunidad desarrolla varias implementaciones.

Gerson propone una fórmula clásica donde SUBTOTALES(3; DESREF(...)) detecta si cada fila es visible:

``
=FILAS(
UNICOS(
SI(
SUBTOTALES(3; DESREF(A1; FILA(A2:A20)-1; ));
A2:A20
)
)
) - 1
`

El truco está en que SUBTOTALES con la función 3 (CONTARA) devuelve 0 para filas ocultas por filtro. DESREF recorre celda a celda para que SUBTOTALES evalúe cada fila individualmente.

Leo propone un enfoque más moderno: usar MAP para crear un vector binario de visibilidad, filtrar el rango original y contar los únicos:

`
=FILAS(
UNICOS(
FILTRAR(
A2:A21;
MAP(A2:A21; LAMBDA(x; SUBTOTALES(103; x)))
)
)
)
`

MAP itera celda a celda y SUBTOTALES(103; x) devuelve 1 si la celda es visible, 0 si está oculta. Luego FILTRAR se queda solo con las visibles y UNICOS + FILAS hace el conteo.

Una tercera variante combina SI con MAP para el mismo resultado sin FILTRAR:

`
=FILAS(
UNICOS(
SI(
MAP(A2:A21; LAMBDA(x; SUBTOTALES(3; x)));
A2:A21
)
)
) - 1
`

La clave de todas las soluciones es la misma: SUBTOTALES es la única función nativa de Excel que "ve" qué filas están ocultas por filtro. Combinada con MAP o DESREF` para evaluar celda a celda, se desbloquea un mundo de posibilidades para funciones dinámicas que respeten los filtros manuales.

Más contenido de Excel en InflueXcel