
Общая формула
=COUNT(UNIQUE(date))
Резюме
Для подсчета уникальных дат (в примере - «торговых дней») вы можете использовать функцию UNIQUE с функцией COUNT или формулу, основанную на функции COUNTIF. В показанном примере формула в ячейке G8:
=COUNT(UNIQUE(date))
где дата - именованный диапазон B5: B16.
Объяснение
Традиционно подсчет уникальных элементов с помощью формулы Excel был сложной задачей, потому что не было специальной уникальной функции. Однако это изменилось, когда в Excel 365 были добавлены динамические массивы вместе с несколькими новыми функциями, включая UNIQUE.
Примечание. В более старых версиях Excel вы можете подсчитывать уникальные элементы с помощью функции СЧЁТЕСЛИ или ЧАСТОТА, как описано ниже.
В показанном примере каждая строка в таблице представляет торговлю акциями. На несколько дат совершается более одной сделки. Цель - подсчитать торговые дни - количество уникальных дат, в которые произошла какая-то сделка. Формула в ячейке G8:
=COUNT(UNIQUE(date))
Работая изнутри, функция UNIQUE используется для извлечения списка уникальных дат из именованного диапазона "date":
UNIQUE(date) // extract unique values
Результатом является массив из 5 чисел, подобный этому:
(44105;44109;44111;44113;44116)
Каждое число представляет дату в Excel без форматирования даты. Пять дат: 1 октября 20, 5 октября 20, 7 октября 20, 9 октября 20 и 12 октября 20.
Этот массив доставляется непосредственно в функцию COUNT:
=COUNT((44105;44109;44111;44113;44116)) // returns 5
который возвращает количество числовых значений 5 в качестве окончательного результата.
Примечание. Функция COUNT подсчитывает числовые значения, а функция COUNTA подсчитывает как числовые, так и текстовые значения. В зависимости от ситуации может иметь смысл использовать один или другой. В этом случае, поскольку даты числовые, мы используем COUNT.
С СЧЁТЕСЛИ
В более старой версии Excel вы можете использовать функцию СЧЁТЕСЛИ для подсчета уникальных дат с помощью такой формулы:
=SUMPRODUCT(1/COUNTIF(date,date))
Работая изнутри, COUNTIF возвращает массив со счетчиком для каждой даты в списке:
COUNTIF(date,date) // returns (2;2;3;3;3;2;2;2;2;3;3;3)
На данный момент у нас есть:
=SUMPRODUCT(1/(2;2;3;3;3;2;2;2;2;3;3;3))
После деления 1 на этот массив у нас есть массив дробных значений:
(0.5;0.5;0.333333333333333;0.333333333333333;0.333333333333333;0.5;0.5;0.5;0.5;0.333333333333333;0.333333333333333;0.333333333333333)
Этот массив доставляется непосредственно в функцию СУММПРОИЗВ. СУММПРОИЗВ суммирует элементы в массиве и возвращает итоговое значение 5.
С ЧАСТОТОЙ
Если вы работаете с большим набором данных, у вас могут возникнуть проблемы с производительностью при использовании приведенной выше формулы СЧЁТЕСЛИ. В этом случае вы можете переключиться на формулу массива на основе функции ЧАСТОТА:
(=SUM(--(FREQUENCY(date,date)>0)))
Примечание. Это формула массива, которую необходимо вводить с помощью Ctrl + Shift + Enter, кроме Excel 365.
Эта формула будет вычислять быстрее, чем версия СЧЁТЕСЛИ выше, но она будет работать только с числовыми значениями. Подробнее читайте в этой статье.