2010-09-17 14:13:03 +0000 2010-09-17 14:13:03 +0000
32
32

¿Cómo contar el número de valores distintos en un rango?

Tengo una tabla grande que ya está organizada mediante filtros, etc. Me gustaría añadir un resumen debajo de ciertas columnas que contenga el número de valores distintos en esa columna.

No hay función =COUNTDISTINCT(A2:A100) así que ¿qué puedo hacer en su lugar? (Excel 2003)

No puedo usar exactamente las respuestas a esta pregunta similar porque no quiero modificar la tabla o el filtrado. Necesito una adición en la hoja de trabajo, no una modificación.

Respuestas (7)

32
32
32
2011-06-05 08:44:38 +0000
=SUMPRODUCT((A2:A100 <> "")/COUNTIF(A2:A100,A2:A100 & ""))

lo hará sin tener que utilizar una fórmula de matriz.

7
7
7
2010-09-17 14:16:02 +0000

Encontré una solución aquí que parece ser una increíble manera indirecta de resolverlo. Pero bueno, funciona…

=SUMA(IF(COUNTIF(A2:A100,A2:A100)=0, “”, 1/COUNTIF(A2:A100,A2:A100))

y luego pulse Ctrl+Mayús+Enter. Si sólo se pulsa Enter, el resultado será erróneo.

1
1
1
2013-05-02 05:42:13 +0000

=SUMA(1/COUNTIF(A2:A100;A2:A100))

Confirma con Ctrl+Mayús+Enter

Para cada celda, cuenta cuántas veces aparece, y suma los inversos de todos estos valores. Supongamos que una cadena o número aparece 5 veces. Su inverso es 0,2 que se suma 5 veces, por lo que se suma 1. Al final da el número de valores diferentes.

¡Nota: no funciona cuando hay espacios en blanco!

1
1
1
2010-09-17 15:08:28 +0000

He encontrado dos recursos para ti: http://www.excelforum.com/excel-worksheet-functions/365877-count-distinct-values.html

y http://www.cpearson.com/excel/Duplicates.aspx

Debería poder encontrar una solución viable a partir de ahí.

1
1
1
2010-09-17 15:10:55 +0000

Este artículo muestra esto para los valores de texto:

=SUM(IF(FREQUENCY(IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""), IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""))>0,1))

y esto para valores numéricos:

=SUM(IF(FREQUENCY(C3:C25, C3:C25)>0,1))

Este artículo muestra fórmulas similares, pero también muestra un método usando filtros.

Contar el número de valores únicos utilizando un filtro

Puede utilizar el filtro avanzado para extraer los valores únicos de una columna de datos y pegarlos en una nueva ubicación. A continuación, puede utilizar la función FILAS para contar el número de elementos en el nuevo rango.

  1. Asegúrese de que la primera fila de la columna tiene una cabecera de columna.
  2. En el menú Datos, apunte a Filtro y luego haga clic en Filtro avanzado.
  3. En el cuadro de diálogo Filtro avanzado, haga clic en Copiar a otra ubicación.
  4. Si el rango que está contando no está ya seleccionado, elimine cualquier información en el cuadro de rango de la lista y luego haga clic en la columna (o seleccione el rango) que contiene sus datos.
  5. En el cuadro Copiar a, borre cualquier información del cuadro o haga clic en el cuadro y, a continuación, haga clic en una columna en blanco donde desee copiar los valores únicos.
  6. Seleccione la casilla Sólo registros únicos y haga clic en Aceptar.

  7. En la celda en blanco situada debajo de la última celda del rango, introduce la función FILAS. Utilice como argumento el rango de valores únicos que acaba de copiar. Por ejemplo, si el rango de valores únicos es B1:B45, entonces introduce
    =RAMAS(B1:B45)

0
0
0
2013-07-02 11:56:27 +0000

Pruebe este enlace. Esto muestra cómo contar valores únicos en una lista omitiendo las celdas en blanco. http://www.functioninexcel.com/lists-arrays/count-unique-values-in-a-list/

= sum( if( frequency( match( List , List , 0 ) , match( List , List , 0 )) > 0 , 1 ))

Donde “Lista” es su rango de celdas por ejemplo:

Lista = $A$2:$A$12 OR- Lista = offset($A$1,,,match( rept(“z”,255) , $A:$A )) -OR- List = offset($A$1,,,match( value(rept(“9”,255)) , $A:$A ))

0
0
0
2013-08-03 23:06:09 +0000

=SUMA(IF(FREQUENCY(IF(SUBTOTAL(3,OFFSET(A2:A100,ROW(A2:A100)-ROW(A2),0,1)),MATCH(“~”&A2:A100,A2:A100&“”,0)),ROW(A2:A100)-ROW(A2)+1),1))

Asegúrese de pulsar CONTROL+SHIFT+ENTER después de pegar esta fórmula. Esto es para un rango de A2:A100, ajuste el rango en consecuencia.