únicos varias valores unicos tabla sumaproducto repetidos entre duplicados dinamica contar conjunto condiciones con excel excel-formula formula pivot-table array-formulas

excel - varias - Contar valores únicos con una condición



contar valores únicos entre duplicados (5)

¿Me gusta esto?

=SUM(--(FREQUENCY(IF(($B$1:$B$8=1), COUNTIF($A$1:$A$8, "<"&$A$1:$A$8), ""), COUNTIF($A$1:$A$8, "<"&$A$1:$A$8))>0)))

Esta es una fórmula de matriz. Deberá presionar CTL + MAYÚS + INTRO

Captura de pantalla

En la columna AI tenemos una lista de diferentes nombres. En la columna B, tengo valores 0 o 1.

Quiero obtener un recuento de todos los nombres únicos de la columna A que tienen 1 en la columna B.

Utilizando la fórmula de matriz inferior, puedo contar nombres únicos pero no puedo aplicar condiciones en la columna B.

=SUM(1/COUNTIF(A:A,A:A))


¿Tiene que ser una fórmula? Una forma realmente fácil de hacer esto es crear una tabla dinámica a partir de las columnas A y B. Luego establecer la Columna B como el campo de filtro y el Conteo de A como los valores (debe etiquetar las columnas A y B). Entonces A4 en la hoja de pivote (al menos en el valor predeterminado) debe contener su respuesta. Esto funcionaría para cualquier lista de tamaños y, de hecho, funcionaría cuando hay múltiples condiciones.

Si tiene que ser una fórmula, ¿tiene que ser completamente así? Si puede ordenar por A antes de que su fórmula funcione, ¿qué tal este flujo de trabajo? No estoy loco por esto y sospecho que podría mejorarse.

1) Ordenar por A (ascendente o descendente), luego por B (descendente)

2) En C, cada fila de C pone una fórmula como esta:

=if (and(A2<>A1,B2=1),1,0)

C1 sería como sigue:

=b1

Arrastre desde C2 hasta la última fila de sus datos (digamos c500).

3) Luego cuente sumando C, = suma (c1: c500).

Sin duda puede arrastrar la fórmula debajo de las filas de datos (siempre que sepa el número máximo que necesitará), debe devolver 0 para todas las filas en blanco. Luego, al agregar datos a A y B, el resto se actualizará automáticamente. Es probable que necesite recurrir a los datos también.

Una cosa buena de la solución de tabla dinámica es que puede crecer automáticamente con su conjunto de datos siempre que inserte los datos nuevos dentro de las filas de los datos existentes. No se requiere clasificación por supuesto.


Asumiendo no más de 100 filas, pruebe esta "fórmula de matriz" para contar los diferentes nombres en A2: A100 donde hay un 1 en la misma fila en B2: B100:

=SUM(IF(FREQUENCY(IF(B2:B100=1,IF(A2:A100<>"",MATCH(A2:A100,A2:A100,0))),ROW(A2:A100)-ROW(A2)+1),1))

confirmado con CTRL+SHIFT+ENTER

Tenga en cuenta que digo diferente no único ya que los dos no son lo mismo


Fácil con una tabla dinámica ......:


Una solución relativamente simple a este problema común es

= SUMA ((B: B = 1) / CONTAR.SI (A: A, A: A, B: B, B: B))

ingresado como una fórmula de matriz.

Deberá limitar el tamaño de las matrices a donde realmente tiene datos.