Як підрахувати кількість різних значень у діапазоні?


32

У мене є велика таблиця, яка вже організована за допомогою фільтрів і т.д.

Немає жодної функції, =COUNTDISTINCT(A2:A100)і що я можу зробити замість цього? (Excel 2003)

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

Відповіді:


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

буде робити це без використання формули масиву.


4
Як / чому це працює ???
RBarryYoung

4
@RBarryYoung, SUMPRODUCT працює як функція масиву, не будучи такою. Хоча він може зробити набагато більше, ніж те, для чого тут використовується, тут він просто перевіряє кожен екземпляр стовпця і придумує масштабоване значення для кожного окремого значення на основі кількості ітерацій у стовпці. Отже, якщо було два екземпляри 'a', це додасть 1/2 та 1/2, щоб отримати 1. Отже, за кожне окреме значення ви додасте один до суми.
Ленс Робертс

1
Це частина, з якою у мене виникають проблеми: " придумати масштабоване значення для кожного окремого значення, виходячи з того, скільки ітерацій є у стовпці ". Якщо я це зрозумів, SUMPRODUCT ефективно виконує цикл, як-от for each [i] in A2:A100 DO:{ sum += (([i]<>"")/COUNTIF(A2:A100,[i])) }так ? У мене виникають невеликі проблеми з розумінням того, як він може перерахувати як умовний, так і другий параметр COUNTIF, але не перший параметр COUNTIF? Це DWIM-магія документує / пояснює десь MS? Було б непогано знати, як це навмисно написати.
RBarryYoung

1
Так, ви отримали це, воно ітерує масив для того, що зазвичай було б одним значенням, помножуючи всі його параметри (що в даному випадку становить лише 1), а потім додає ітерації. SUMPRODUCTs можуть бути дуже складними, але вони є однією з найкорисніших функцій в Excel, вона може робити буквальні чудеса.
Ленс Робертс

4
Це не вдається, якщо вхід містить порожні записи. Легко виправити , як призначалася на YouTube полягає в наступному: =SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100,A2:A100&"")). Це гарантує, що COUNTIFніколи не повертає 0 для порожніх рядків, що може призвести до DIV/0помилки.
cfi

7

Тут я знайшов рішення, яке здається неймовірним круговим способом його вирішення. Але ей, це працює ...

= SUM (АКО (COUNTIF (A2: A100, A2: A100) = 0, "", 1 / COUNTIF (A2: A100, A2: A100)))

а потім натисніть Ctrl+ Shift+ Enter. Тільки натискання Enterдасть неправильний результат.


Я хотів би бачити інші відповіді! Чи є кращий спосіб, ніж це вирішити?
Torben Gundtofte-Bruun

1
Ні, це найкращий спосіб. Я не впевнений, чому там ІФ. Ви можете просто використовувати = SUM (1 / COUNTIF (A2: A100, A2: A100)) введений масив
dkusleika

2
@dkusleika 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

= SUM (1 / COUNTIF (A2: A100; A2: A100))

Підтвердіть за допомогою Ctrl + Shift + Enter

Для кожної комірки він підраховує, скільки разів вона виникає, і підсумовує звороти всіх цих значень. Припустимо, якийсь рядок або число окусів 5 разів. Його обернена величина 0,2, яка підсумовується в 5 разів, тому додається 1. Зрештою, він дає кількість різних значень.

Примітка: не працює, коли виникають заготовки!


0

Спробуйте це посилання. Це показує, як рахувати унікальні значення у списку, опускаючи порожні комірки.

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

= сума (якщо (частота (збіг (Список, Список, 0), збіг (Список, Список, 0))> 0, 1))

Де "Список" - це ваш діапазон комірок, наприклад:

Список = $ A $ 2: $ A $ 12 OR- Список = зміщення ($ A $ 1 ,,, match (rept ("z", 255), $ A: $ A)) -OR- List = offset ($ A $ 1, ,, match (значення (rept ("9", 255)), $ A: $ A))


0

= СУМ (ЯКЩО (ЧАСТОЧАСЬКІСТЬ (ЯКЩО (СУБТОТ (3, OFFSET (A2: A100, ROW (A2: A100) -ROW (A2), 0,1)), MATCH ("~" & A2: A100, A2: A100 & " ", 0)), ROW (A2: A100) -ROW (A2) +1), 1))

Не забудьте натиснути CONTROL + SHIFT + ENTER після вставки цієї формули. Це для діапазону A2: A100, відповідно регулюйте діапазон.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.