Как посчитать количество различных значений в диапазоне?

32

У меня есть большая таблица, которая уже организована с использованием фильтров и т. Д. Я хотел бы добавить сводку под определенными столбцами, которые содержат количество различных значений в этом столбце.

Там нет функции, =COUNTDISTINCT(A2:A100)так что я могу сделать вместо этого? (Excel 2003)

Я не могу точно использовать ответы на этот похожий вопрос, потому что я не хочу изменять таблицу или фильтрацию. Мне нужно дополнение на листе, а не модификация .

Торбен Гундтофте-Бруун
источник

Ответы:

31
=SUMPRODUCT((A2:A100 <> "")/COUNTIF(A2:A100,A2:A100 & ""))

сделает это без необходимости использовать формулу массива.

Лэнс Робертс
источник
4
Как / почему это работает ???
RBarryYoung
4
@RBarryYoung, SUMPRODUCT работает как функция Array, не будучи таковой. Хотя он может сделать гораздо больше, чем то, для чего он здесь используется, здесь он просто проверяет каждый экземпляр столбца и подбирает масштабированное значение для каждого отдельного значения на основе количества итераций в столбце. Таким образом, если бы было два экземпляра 'a', то было бы добавить 1/2 и 1/2, чтобы получить 1. Таким образом, для каждого отдельного значения вы добавляете один к сумме.
Ланс Робертс
1
Это та часть, с которой у меня возникают проблемы: « придумывать масштабированное значение для каждого отдельного значения на основе количества итераций в столбце». Если я это понимаю, то SUMPRODUCT эффективно выполняет цикл, как for each [i] in A2:A100 DO:{ sum += (([i]<>"")/COUNTIF(A2:A100,[i])) }правильно ? У меня возникли небольшие проблемы с пониманием того, как он знает, как перечислить условный и 2-й параметр COUNTIF, но не 1-й параметр COUNTIF? Является ли эта магия DWIM документированной / объясненной где-либо MS? Было бы неплохо знать, как написать это намеренно.
RBarryYoung
1
Да, вы получили, он итерирует массив для того, что обычно будет одним значением, умножая все его параметры (который в данном случае равен всего 1), затем добавляя итерации. SUMPRODUCT могут быть очень сложными, но они являются одной из самых полезных функций в Excel, она может совершать буквальные чудеса.
Лэнс Робертс
4
Это терпит неудачу, если вход содержит пустые записи. Легко исправить , как предназначалась на YouTube заключается в следующем: =SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100,A2:A100&"")). Это гарантирует, что COUNTIFникогда не возвращает 0 для пустых строк, что приведет к DIV/0ошибке.
Cfi
7

Я нашел решение здесь которое кажется невероятным окольным путем. Но эй, это работает ...

= СУММА (ЕСЛИ (COUNTIF (A2: A100, A2: A100) = 0, "", 1 / COUNTIF (A2: A100, A2: A100)))

а затем нажмите Ctrl+ Shift+ Enter. Нажатие только Enterдаст неправильный результат.

Торбен Гундтофте-Бруун
источник
Я хотел бы видеть другие ответы! Есть ли лучший способ решить эту проблему?
Торбен Гундтофте-Брюн
1
Нет, это лучший способ. Я не уверен, почему там есть IF. Вы можете просто использовать введенный массив = SUM (1 / COUNTIF (A2: A100, A2: A100))
dkusleika
2
@dkusleika IF, кажется, там, чтобы предотвратить деление на ноль ошибок. Как упоминалось на странице, на которую ссылается выше, это необходимо, если диапазон содержит пустые ячейки, в противном случае вы можете не указывать IF.
Bavi_H
1

Эта статья показывает это для текстовых значений:

=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))

и это для числовых значений:

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

В этой статье показаны похожие формулы, а также показан метод с использованием фильтров.

Подсчитайте количество уникальных значений с помощью фильтра

Вы можете использовать расширенный фильтр, чтобы извлечь уникальные значения из столбца данных и вставить их в новое место. Затем вы можете использовать функцию ROWS для подсчета количества предметов в новом диапазоне.

  1. Убедитесь, что первая строка в столбце имеет заголовок столбца.
  2. В меню «Данные» выберите пункт «Фильтр» и нажмите «Расширенный фильтр».
  3. В диалоговом окне «Расширенный фильтр» нажмите «Копировать в другое место».
  4. Если подсчитываемый вами диапазон еще не выбран, удалите любую информацию в поле «Список» и затем щелкните столбец (или выберите диапазон), в котором содержатся ваши данные.
  5. В поле «Копировать в» удалите любую информацию в поле или щелкните в поле, а затем щелкните пустой столбец, в который необходимо скопировать уникальные значения.
  6. Установите флажок «Только уникальные записи» и нажмите «ОК».

    Уникальные значения из выбранного диапазона копируются в новый столбец.

  7. В пустой ячейке под последней ячейкой диапазона введите функцию ROWS. Используйте диапазон уникальных значений, которые вы только что скопировали в качестве аргумента. Например, если диапазон уникальных значений B1: B45, введите:
    = ROWS (B1: B45)

Приостановлено до дальнейшего уведомления.
источник
1

= СУММ (1 / СЧЕТЕСЛИ (А2: А100; A2: A100))

Подтвердите с помощью Ctrl + Shift + Enter

Для каждой ячейки он подсчитывает, сколько раз это происходит, и суммирует обратные значения всех этих значений. Предположим, что некоторые строки или числа окк 5 раз. Его обратное значение равно 0,2, которое суммируется 5 раз, поэтому добавляется 1. В конце он дает количество разных значений.

Примечание: не работает, когда возникают пробелы!

user221470
источник
0

Попробуйте эту ссылку. Это показывает, как считать уникальные значения в списке, пропуская пустые ячейки.

http://www.functioninexcel.com/lists-arrays/count-unique-values-in-a-list/

= сумма (если (частота (совпадение (список, список, 0), совпадение (список, список, 0))> 0, 1))

Где «Список» - это ваш диапазон ячеек, например:

Список = $ A $ 2: $ A $ 12 ИЛИ- Список = смещение ($ A $ 1 ,,, match (rept ("z", 255), $ A: $ A)) -OR- Список = смещение ($ A $ 1, ,, match (value (rept ("9", 255)), $ A: $ A))

Чарльз Хант
источник
0

= СУММ (ЕСЛИ (частоты (ПЧ (ИТОГО (3, OFFSET (А2: А100, ROW (A2: A100) -строка (А2), 0,1)), ПОИСКПОЗ ( "~" & А2: А100, А2: А100 &» », 0)), ROW (A2: A100) -строка (А2) + 1), 1))

Обязательно нажимайте клавиши CONTROL + SHIFT + ENTER после вставки этой формулы. Это для диапазона A2: A100, отрегулируйте диапазон соответствующим образом.

Vlada
источник