Преброяване на уникални стойности

Често възниква необходимостта да се намери броят уникални стойности в дадена колона или ред.

Например долната таблица съдържа измислен списък на клиенти, на които измислена фирма е издала фактури с някакви (измислени) стойности.

Искаме да разберем колко на брой са въпросните клиенти.  Той очевидно не е 14, колкото е последният номер на фактура, защото има повтарящи се клиенти.

Един начин да се отговори на този въпрос е да се направи списък, в който всеки клиент се повтаря само веднъж. За целта се използва Advanced filter.

В появилото се меню избираме:

Copy to another location (за да не запишем нещо върху оригиналната таблица)

Unique records only (за да получим списък с уникални стойности)

А в Copy to посочваме клетката, в която искаме да започва уникалният списък. В случая е избрана клетка G2.

 

 

Накрая кликаме ОК и получаваме списък с уникални стойности, в който всеки клиент се среща само веднъж. Остава само да преброим клиентите с помощта на функцията COUNTA.

 

Този метод работи без грешка, но ако трябва да го направим с една формула?

РЕШЕНИЕ: SUMPRODUCT(1/COUNTIF(B3:B16;B3:B16))

Резултат: 8

Как работи:

1. COUNTIF(B3:B16;B3:B16)
Търси в областта B3:B16 и брои колко пъти се среща всяка от стойностите там.
В резултат създава област (array), която за Ексел изглежда така: {4;2;2;4;2;4;1;2;4;2;1;1;1;2}

2. 1/COUNTIF(B3:B16;B3:B16)
Тук всяко едно число от горната област се използва като делител на 1
Резултатът е нова област от вида {0.25;0.5;0.5;0.25;0.5;0.25;1;0.5;0.25;0.5;1;1;1;0.5}

3. SUMPRODUCT
Тази функция събира всички стойности от областта
Или 0.25+0.5+0.5+0.25+0.5+0.25+1+0.5+0.25+0.5+1+1+1+0.5 = 8

 

Повече подробности за използваните функции:

COUNTA

COUNTIF

SUMPRODUCT

Публикувано в Формули с етикети , , , . Постоянна връзка.