РЕДАКТИРОВАТЬ : Я понял, как работает ваше решение - поправил, чтобы отразить это.
ЧАСТОТА ищет записи из ваших корзин в массиве поиска. Вот как это работает:
Массив поиска: 1 2 3 4 1 2 7 3
Контейнеры: 1 2 3 4 1 2 7 3
Корзина 1 => есть две 1 => 2
Корзина 2 => есть две 2 = = 2
Корзина 3 => есть две 3 => 2
Корзина 4 => есть одна 4 => 1
Корзина 1 повторена => 1 уже посчитана => 0
Корзина 2 повторена => 2 уже учтено => 0
Корзина 7 => есть одна 7 => 1
Корзина 3 повторяется => 3 уже учтено => 0
Почти кажется, что решение использует причуду ЧАСТОТЫ, то есть он не будет считать один и тот же бин дважды, потому что вы могли бы ожидать, что второй бин со значением 1 будет ненулевым как Что ж. Но вот как это работает - поскольку он будет подсчитывать только количество вхождений для первого бина, а не для дублированного бина, количество строк со значением больше нуля даст вам количество отдельных записей.
Вот альтернативный подход, который может оказаться полезным. его можно использовать для вычисления количества различных значений:
Предположим, ваш диапазон строк B2: B10. Заполните другой столбец
=(MATCH(B2,B$2:B2,1)-(ROW(B2)-ROW(B$2)))>0
Строка должна меняться при копировании, поэтому вторая строка должна быть, например:
=(MATCH(B3,B$2:B3,1)-(ROW(B3)-ROW(B$2)))>0
Это сигнал ИСТИНА, если текущая строка содержит первый экземпляр строки (если вы дадите ей пару минут, вы сможете понять, что она делает). Поэтому, если вы посчитаете количество TRUE с помощью COUNTIF (), вы должны получить количество различных строк.