Простая сводная таблица для подсчета уникальных значений

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

например, у меня есть это:

ABC   123
ABC   123
ABC   123
DEF   456
DEF   567
DEF   456
DEF   456

что я хочу-это сводная таблица, которая показывает мне это:

ABC   1
DEF   2

простая сводная таблица, которую я создаю, просто дает мне это (количество строк):

ABC   3
DEF   4  

но вместо этого мне нужно количество уникальных значений.

что я действительно пытаюсь сделать, это выяснить, какие значения в первом столбце не имеют одинаковое значение во втором столбце для всех строк. Другими словами, "ABC" - это "хорошо", "DEF" - это "плохо"

Я уверен, что есть более простой способ сделать это, но подумал, что я дам pivot table попробовать...

17 ответов


вставьте 3-й столбец и в ячейку C2 вставить эту формулу

=IF(SUMPRODUCT(($A:$A2=A2)*($B:$B2=B2))>1,0,1)

и скопируйте его. Теперь создайте свой pivot на основе 1-го и 3-го столбцов. Смотрите снимок

enter image description here


UPDATE: теперь вы можете сделать это автоматически с помощью Excel 2013. Я создал это как новый ответ, потому что мой предыдущий ответ фактически решает немного другую проблему.

Если у вас такая версия, то выберите данные для создания сводной таблицы при создании таблицы, убедитесь, что опция 'флажок добавить эти данные в модель данных (см. ниже).

Tick the box next to 'Add this data to the Data Model'

затем, когда откроется сводная таблица, создайте строки, столбцы и значения обычно. Затем щелкните поле, которое требуется вычислить, и измените параметры значения поля: Edit field value settings

наконец, прокрутите вниз до самого последнего варианта и выберите 'Distinct Count.' Choose the option 'Distinct Count'

Это должно обновить значения сводной таблицы, чтобы показать данные, которые вы ищете.


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

ABC   123  
ABC   123  
ABC   123   
DEF   456  
DEF   567  
DEF   456  
DEF   456

и хотите, чтобы он выглядел как:

ABC   1  
DEF   2

но что-то вроде:

ABC   123  
ABC   123  
ABC   123  
ABC   456  
DEF   123  
DEF   456  
DEF   567  
DEF   456  
DEF   456

и хотел, чтобы это выглядеть так:

ABC  
   123    3  
   456    1  
DEF  
   123    1  
   456    3  
   567    1

Я нашел лучший способ получить мои данные в этом формате, а затем иметь возможность манипулировать им дальше было использовать следующее:

enter image description here

как только вы выберете "запуск total in", выберите заголовок для вторичного набора данных (в этом случае это будет заголовок или заголовок столбца набора данных, который включает 123, 456 и 567). Это даст вам максимальное значение с общим количеством элементов в этом наборе в вашем основном наборе данных.

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

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


возможность выполнения "отдельного подсчета" является частью Excel 2013, но не включается автоматически.

Итак, если вы запустите копию EXCEL 2013, вот блестящий способ решить эту проблему без хлопот прохождения функции: http://datapigtechnologies.com/blog/index.php/distinct-count-in-pivot-tables-finally-in-excel-2013/



Я нашел самый простой подход-использовать под Value Field Settings (левый выберите поле ). Вариант Distinct Count в самом низу списка.

Location of where to click

вот перед (сверху; нормальный Count) и после (внизу; Distinct Count)

COUNT

DISTINCT COUNT


необязательно сортировать таблицу, чтобы следующая формула возвращала 1 для каждого уникального значения.

предполагая, что диапазон таблиц для данных, представленных в вопросе, равен A1: B7 введите следующую формулу в ячейку C1:

=IF(COUNTIF($B:$B1,B1)>1,0,COUNTIF($B:$B1,B1))

скопировать эту формулу на все строки и последняя строка содержит:

=IF(COUNTIF($B:$B7,B7)>1,0,COUNTIF($B:$B7,B7))

это приводит к тому, что 1 возвращается в первый раз, когда запись найдена, и 0 для всех времен после этого.

просто просуммировать столбец в сводной таблице


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

  1. (сначала сделайте копию своих данных)
  2. объединить столбцы
  3. удалить дубликаты в объединенном столбце
  4. Last-pivot на результирующем наборе

Примечание: я хотел бы включить изображения, чтобы сделать это еще проще понять, но не могу, потому что это мой первый пост;)


Сиддхарт-это потрясающе.

, этот метод может попасть в беду при работе с большим набором данных (мой компьютер застыл на 50 000 строк). Некоторые менее процессороемкие методы:

одиночная проверка уникальности

  1. сортировка по двум столбцам (A, B в этом примере)
  2. используйте формулу, которая смотрит на меньше данных

    =IF(SUMPRODUCT(($A2:$A3=A2)*($B2:$B3=B2))>1,0,1) 
    

несколько проверка уникальности

Если вам нужно проверить уникальность в разных столбцах, вы не можете полагаться на два вида.

вместо

  1. сортировка по одному столбцу (A)
  2. добавить формулу, охватывающую максимальное количество записей для каждой группы. Если ABC может иметь 50 строк, формула будет

    =IF(SUMPRODUCT(($A2:$A49=A2)*($B2:$B49=B2))>1,0,1)
    

Excel 2013 может делать подсчет различных в поворотах. Если нет доступа к 2013 году, и это меньший объем данных, я делаю две копии необработанных данных, а в копии b выберите оба столбца и удалите дубликаты. Затем сделайте поворот и подсчитайте столбец b.


вы можете использовать COUNTIFS для нескольких критериев,

=1 / COUNTIFS (A:A,A2,B:B,B2), а затем перетащите вниз. Вы можете поместить туда столько критериев, сколько хотите, но для этого требуется много времени.


Шаг 1. добавить столбец

Шаг 2. использовать формулу =IF(COUNTIF(C2:$C10,C2)>1,0,1) в 1-й записи

Шаг 3. перетащите его на все записи

Шаг 4. фильтр '1' в столбце с формулой


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

Я имею в виду, ячейки C1 должно быть 1. Ячейка C2 должен содержать формулу =IF(COUNTIF($A:$A1,$A2)*COUNTIF($B:$B1,$B2)>0,0,1). Скопируйте эту формулу в ячейку C3 содержит =IF(COUNTIF($A:$A2,$A3)*COUNTIF($B:$B2,$B3)>0,0,1) и так далее.

если у вас есть ячейка заголовка, вы захотите переместить их все вниз по строке и ваш C3 формула должна быть =IF(COUNTIF($A:$A2,$A3)*COUNTIF($B:$B2,$B3)>0,0,1).


если данные отсортированы.. я предлагаю использовать следующую формулу

=IF(OR(A2<>A3,B2<>B3),1,0)

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


обычно я сортирую данные по полю, которое мне нужно сделать, чтобы использовать отдельный счетчик IF (A2=A1,0, 1); Вы получаете 1 в верхней строке каждой группы идентификаторов. Простой и не требует времени для вычисления на больших наборах данных.


вы можете использовать для вспомогательной колонки также VLOOKUP. Я протестировал и выглядит немного быстрее, чем COUNTIF.

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

=IFERROR(IF(VLOOKUP(A2;$A:A1;1;0)=A2;0;1);1)

Я нашел более простой способ сделать это. Ссылаясь на пример Siddarth Rout, если я хочу подсчитать уникальные значения в столбце A:

  • добавьте новый столбец C и заполните C2 Формулой " =1 / COUNTIF ($A:$A,A2)"
  • перетащите формулу вниз до конца столбца
  • pivot со столбцом a как метка строки и Sum{column C) в значениях, чтобы получить количество уникальных значений в столбце a