jueves, 5 de noviembre de 2015

Contar registros únicos dentro de un intervalo dado.

Al hilo de una entrada anterior (ver)un lector me planteaba la forma de realizar un conteo de registros únicos pero dentro de un intervalo de valores dados.
Partiremos de este listado mezclado de valores repetidos (marcados en color rojo) y únicos:



Se trata por tanto de determinar para cada intervalo del rango D5:E7 qué numero de registros únicos (sin contar sus repeticiones) existe.
Observemos como con la fórmula descrita en el link del inicio del post, en la celda F4 calculamos el número total de valores únicos en nuestro rango (TblaValores4), con la fórmula matricial:
=SUMA(SI(FRECUENCIA(Tbl_Valores4[Valores:];Tbl_Valores4[Valores:])>0;1))


Para conseguir nuestro objetivo, y conocer el dato de únicos por intervalo, sustituiremos el rango completo por una nueva matricial que únicamente nos devuelva los valores dentro del intervalo:
SI(Tbl_Valores4[Valores:]>=$D5;SI(Tbl_Valores4[Valores:]<=$E5;Tbl_Valores4[Valores:];"")) esto es, obtenemos un rango auxiliar sobre el que trabajar, pero sólo con los valores dentro de cada intervalo...


Insertamos entonces en al celda F5 (y luego arrastraremos al F6 y F7) la siguiente fórmula matricial:

=SUMA(SI(FRECUENCIA(SI(Tbl_Valores4[Valores:]>=$D5;SI(Tbl_Valores4[Valores:]<=$E5;Tbl_Valores4[Valores:];""));SI(Tbl_Valores4[Valores:]>=$D5;SI(Tbl_Valores4[Valores:]<=$E5;Tbl_Valores4[Valores:];"")))>0;1;0))

Recordemos ejecutar nuestras funciones presionando Ctrl+Mayusc+Enter en lugar de solo Enter).


Listo, el resultado sería:



Un par de formas sencillas para comprobar esta realidad sería Seleccionar nuestro origen y Eliminar Duplicados o bien construir una Tabla dinámica llevando al área de filas el campo de valores...
de ambas maneras veríamos muy facilmente que el conteo obtenido es correcto.

2 comentarios:

  1. Hola Ismael,

    Otra manera que me parece más sencilla, los valores están nombrados como "Datos", el límite inferior como "Bajo" y el límite superior como "Alto" (original que es uno).

    Para calcular el total de ocurrencias sin repeticiones:

    =SUMAPRODUCTO(1/CONTAR.SI(Datos;Datos))

    Para calcular el número de ocurrencias sin repetición en un intervalo de valores:

    =SUMAPRODUCTO(1/CONTAR.SI(Datos;Datos);N(Datos>=Bajo);N(Datos<=Alto))

    Un saludo y enhorabuena por el blog.

    Daniel

    ResponderEliminar
    Respuestas
    1. Muchas gracias Daniel!!!
      fantástica solución.

      Un saludo

      Eliminar