Это похоже на простую сводную таблицу для изучения. Я хотел бы сделать подсчет уникальных значений для определенного значения, по которому я группирую.
Например, у меня есть это:
ABC 123
ABC 123
ABC 123
DEF 456
DEF 567
DEF 456
DEF 456
То, что я хочу, это сводная таблица, которая показывает мне это:
ABC 1
DEF 2
Простая сводная таблица, которую я создаю, просто дает мне это (количество строк):
ABC 3
DEF 4
Но я хочу вместо этого количество уникальных значений.
То, что я действительно пытаюсь сделать, это выяснить, какие значения в первом столбце не имеют одинаковое значение во втором столбце для всех строк. Другими словами, «ABC» это «хорошо», «DEF» это «плохо»
Я уверен, что есть более простой способ сделать это, но я решил попробовать сводную таблицу ...
excel
excel-formula
pivot-table
user1586422
источник
источник
Ответы:
Вставьте 3-й столбец и в ячейку
C2
вставьте эту формулуи скопируйте его вниз. Теперь создайте свой пивот на основе 1-го и 3-го столбцов. Посмотреть снимок
источник
=IF(SUM((A$2:A2=A2)*(B$2:B2=B2)) > 1, 0, 1)
(нажмите Ctrl-Shift-Enter при вводе формулы, чтобы она приобрела форму{}
вокруг нее).ОБНОВЛЕНИЕ: теперь вы можете сделать это автоматически с помощью Excel 2013. Я создал его как новый ответ, потому что мой предыдущий ответ фактически решает немного другую проблему.
Если у вас есть эта версия, выберите свои данные для создания сводной таблицы, и при создании таблицы убедитесь, что установлен флажок «Добавить эти данные в модель данных» (см. Ниже).
Затем, когда откроется ваша сводная таблица, обычно создайте строки, столбцы и значения. Затем щелкните поле, для которого вы хотите рассчитать различное количество, и измените настройки значения поля:
Наконец, прокрутите вниз до самого последнего варианта и выберите «Отличное количество».
Это должно обновить значения вашей сводной таблицы, чтобы отобразить данные, которые вы ищете.
источник
Я хотел бы добавить дополнительную опцию в микс, который не требует формулы, но может быть полезен, если вам нужно посчитать уникальные значения в наборе по двум различным столбцам. Используя оригинальный пример, у меня не было:
и хотите, чтобы это выглядело как:
Но что-то вроде
и хотел, чтобы это выглядело как:
Я нашел лучший способ перевести мои данные в этот формат и затем иметь возможность манипулировать ими дальше - использовать следующее:
После того, как вы выберете «Промежуточный итог в», выберите заголовок для вторичного набора данных (в этом случае это будет заголовок или заголовок столбца набора данных, который включает 123, 456 и 567). Это даст вам максимальное значение с общим количеством элементов в этом наборе в вашем основном наборе данных.
Затем я скопировал эти данные, вставил их в значения, а затем поместил в другую сводную таблицу, чтобы упростить манипулирование ими.
К вашему сведению, у меня было около четверти миллиона строк данных, так что это работало намного лучше, чем некоторые подходы на основе формул, особенно те, которые пытаются сравнивать по двум столбцам / наборам данных, потому что это продолжало сбой приложения.
источник
Я обнаружил, что самый простой подход - использовать
Distinct Count
опцию в разделеValue Field Settings
( щелкните левой кнопкой мыши на поле наValues
панели). Опция дляDistinct Count
находится в самом низу списка.Вот до (TOP; нормальный
Count
) и после (BOTTOM;Distinct Count
)источник
См. Дебра Далглиш: Граф Уникальные предметы
источник
Нет необходимости сортировать таблицу по следующей формуле, чтобы она возвращала 1 для каждого уникального значения.
предполагая, что диапазон данных для данных, представленных в вопросе, равен A1: B7 введите в ячейку C1 следующую формулу:
Скопируйте эту формулу во все строки, и последняя строка будет содержать:
Это приводит к тому, что 1 возвращается в первый раз при обнаружении записи, а 0 - для всех последующих раз.
Просто сложите столбец в вашей сводной таблице
источник
=IF(COUNTIF($B$1:$B1,B1),1,0)
- таким образом, countif запускается только один раз!Мой подход к этой проблеме немного отличается от того, что я вижу здесь, поэтому я поделюсь.
Примечание: я хотел бы включить изображения, чтобы сделать это еще проще для понимания, но не могу, потому что это мой первый пост;)
источник
Ответ Сиддхарта потрясающий.
Однако при работе с большим набором данных этот метод может вызвать проблемы (мой компьютер завис на 50000 строк). Несколько менее ресурсоемких методов:
Единственная проверка уникальности
Используйте формулу, которая смотрит на меньше данных
Многократные проверки уникальности
Если вам нужно проверить уникальность в разных столбцах, вы не можете полагаться на два вида.
Вместо,
Добавьте формулу, охватывающую максимальное количество записей для каждой группировки. Если ABC может иметь 50 строк, формула будет
источник
=A2&B2
. Затем добавить столбец D и в D2 поставить=IF(MATCH(C2, C$2:C2, 0) = ROW(C1), 1, 0)
. Заполните оба вниз. Хотя поиск по-прежнему выполняется с начала всего диапазона, он останавливается, когда находит первый, и вместо умножения значений из 50 000 строк вместе, он просто должен найти значение - поэтому он должен работать намного лучше.Excel 2013 может делать подсчет отличных в сводках. Если нет доступа к 2013 году, а объем данных меньше, я делаю две копии необработанных данных, а в копии b выбираю оба столбца и удаляю дубликаты. Затем сделайте опору и сосчитайте ваш столбец b.
источник
Вы можете использовать COUNTIFS для нескольких критериев,
= 1 / COUNTIFS (A: A, A2, B: B, B2) и затем перетащите вниз. Вы можете указать столько критериев, сколько захотите, но на это уходит много времени.
источник
Шаг 1. Добавьте столбец
Шаг 2. Используйте формулу =
IF(COUNTIF(C2:$C$2410,C2)>1,0,1)
в 1-й записиШаг 3. Перетащите его на все записи
Шаг 4. Фильтр «1» в столбце с формулой
источник
Вы можете сделать дополнительный столбец для сохранения уникальности, то просуммировать , что в сводной таблице.
Я имею в виду, клетка
C1
должна быть всегда1
. ЯчейкаC2
должна содержать формулу=IF(COUNTIF($A$1:$A1,$A2)*COUNTIF($B$1:$B1,$B2)>0,0,1)
. Скопируйте эту формулу, чтобы ячейкаC3
содержала=IF(COUNTIF($A$1:$A2,$A3)*COUNTIF($B$1:$B2,$B3)>0,0,1)
и так далее.Если у вас есть ячейка заголовка, вам нужно переместить все это вниз по строке, и ваша
C3
формула должна быть такой=IF(COUNTIF($A$2:$A2,$A3)*COUNTIF($B$2:$B2,$B3)>0,0,1)
.источник
Если у вас есть данные отсортированы .. Я предлагаю использовать следующую формулу
Это быстрее, поскольку он использует меньше ячеек для расчета.
источник
Я обычно сортирую данные по полю, которое мне нужно, чтобы выполнить четкий подсчет, а затем использовать IF (A2 = A1,0,1); затем вы получаете 1 в верхнем ряду каждой группы идентификаторов. Простой и не занимает много времени для расчета на больших наборах данных.
источник
Вы можете использовать для вспомогательной колонки также
VLOOKUP
. Я проверял и выглядит немного быстрее, чемCOUNTIF
.Если вы используете заголовок и данные начинаются в ячейке
A2
, то в любой ячейке строки используйте эту формулу и скопируйте во все остальные ячейки в том же столбце:источник
Я нашел более простой способ сделать это. Ссылаясь на пример Сиддарта Раута, если я хочу посчитать уникальные значения в столбце A:
источник
B
. Как вы будете адаптировать это для работы с несколькими столбцами?