Skip to content
В этом руководстве вы узнаете, как посчитать уникальные значения в Excel с помощью формул и как это сделать в сводной таблице. Мы также разберём несколько примеров счёта уникальных текстовых и числовых значений, в том числе с учетом регистра букв.
При работе с большим набором данных в Excel вам часто может потребоваться знать, сколько в вашей таблице повторяющихся и сколько уникальных записей.
И вот о чем мы сейчас поговорим:
- Как посчитать уникальные значения в столбце.
- Считаем уникальные текстовые значения.
- Подсчет уникальных чисел.
- Как посчитать уникальные с учётом регистра.
- Формулы для подсчета различных значений.
- Как не учитывать пустые ячейки?
- Сколько встречается различных чисел?
- Считаем различные текстовые значения.
- Как сосчитать различные текстовые значения с учетом условий?
- Считаем количество различных чисел с ограничениями.
- Как учесть регистр при подсчёте?
- Как посчитать уникальные строки?
- Используем сводную таблицу.
Если вы регулярно посещаете этот блог, вы уже знаете формулу Excel для подсчета дубликатов. А сегодня мы собираемся изучить различные способы подсчета уникальных значений в Excel. Но для ясности давайте сначала определимся с терминами.
- Уникальные значения – те, которые появляются в списке только один раз.
- Различные – это все, которые имеются в списке без учета повторов, то есть уникальные плюс первое вхождение повторяющихся.
Следующий рисунок иллюстрирует эту разницу:
А теперь давайте посмотрим, как можно их посчитать с помощью формул и функций сводной таблицы.
Далее вы найдете несколько примеров для подсчета уникальных данных разных типов.
Считаем уникальные значения в столбце.
Предположим, у вас есть столбец с именами на листе Excel, и вам нужно подсчитать, сколько там есть неповторяющихся. Самое простое решение состоит в том, чтобы использовать функцию СУММ в сочетании с ЕСЛИ и СЧЁТЕСЛИ :
=СУММ(ЕСЛИ(СЧЁТЕСЛИ(диапазон ; диапазон ) = 1,1,0))
Примечание. Это формула массива, поэтому обязательно нажмите Ctrl + Shift + Enter, чтобы корректно ввести её. Как только вы это сделаете, Excel автоматически заключит всё выражение в {фигурные скобки}, как показано на скриншоте ниже. Ни в коем случае нельзя вводить фигурные скобки вручную, это не сработает.
В этом примере мы считаем уникальные имена в диапазоне A2: A10, поэтому наше выражение выглядит так:
{=СУММ(ЕСЛИ(СЧЁТЕСЛИ(A2:A10;A2:A10)=1;1;0))}
Этот метод подходит и для текстовых, и для цифровых данных. Недостатком является то, что в качестве уникального он будет пересчитывать любое содержимое, в том числе и ошибки.
Далее в этом руководстве мы обсудим несколько других подходов для подсчета уникальных значений разных типов. И поскольку в основном они являются вариациями этой базовой формулы, имеет смысл подробно рассмотреть её. Если вы поймете, как это работает, то сможете настроить ее для своих данных. Если кого-то не интересуют технические подробности, вы можете сразу перейти к следующему примеру.
Как работает формула подсчета уникальных значений?
Как видите, здесь используются 3 разные функции – СУММ, ЕСЛИ и СЧЁТЕСЛИ. Посмотрим, что делает каждая из них:
- Функция СЧЁТЕСЛИ считает, сколько раз каждое отдельное значение появляется в анализируемом диапазоне.
В этом примере СЧЁТЕСЛИ(A2:A10;A2:A10)возвращает массив {3:2:2:1:1:2:3:2:3}.
- Функция ЕСЛИ оценивает каждый элемент в этом массиве, сохраняет все единицы (то есть, уникальные) и заменяет все остальные цифры нулями.
Итак, функция ЕСЛИ(СЧЁТЕСЛИ(A2:A10;A2:A10)=1;1;0) преобразуется в ЕСЛИ({3:2:2:1:1:2:3:2:3}) = 1,1,0).
И далее она превращается в массив чисел {0:0:0:1:1:0:0:0:0}. Здесь 1 означает уникальное значение, а 0 – появляющееся более 1 раза.
- Наконец, функция СУММ складывает числа в этом итоговом массиве и выводит общее количество уникальных значений. Что нам и нужно.
Подсчет уникальных текстовых значений.
Если ваш список содержит как числа так и текст, и вы хотите посчитать только уникальные текстовые строки, добавьте функцию ЕТЕКСТ() в формулу массива, описанную выше:
{=СУММ(ЕСЛИ(ЕТЕКСТ(A2:A10)*СЧЁТЕСЛИ(A2:A10;A2:A10)=1;1;0))}
Функция ЕТЕКСТ возвращает ИСТИНА, если исследуемое содержимое ячейки является текстом, и ЛОЖЬ в противоположном случае. Поскольку звездочка (*) в формулах массива работает как оператор И, то функция ЕСЛИ возвращает 1, только если рассматриваемое одновременно текстовое и уникальное, в противном случае получаем 0. И после того, как функция СУММ сложит все числа, вы получите количество уникальных текстовых значений в указанном диапазоне.
Не забывайте нажимать Ctrl + Shift + Enter
, чтобы правильно ввести формулу массива, и вы получите результат, подобный этому:
Рис3
Как вы можете видеть на скриншоте выше, мы получили общее количество уникальных текстовых значений, исключая пустые ячейки, числа, логические выражения ИСТИНА и ЛОЖЬ, а также ошибки.
Как сосчитать уникальные числовые значения.
Чтобы посчитать уникальные числа в списке данных, используйте формулу массива точно так же, как мы только что делали при подсчете текстовых данных. Отличие заключается в том, что вы используете ЕЧИСЛО вместо ЕТЕКСТ:
{=СУММ(ЕСЛИ(ЕЧИСЛО(A2:A10)*СЧЁТЕСЛИ(A2:A10;A2:A10)=1;1;0))}
Пример и результат вы видите на скриншоте чуть выше.
Уникальные значения с учетом регистра.
Если для вас принципиально различие в заглавных и прописных буквах, то самым простым способом подсчета будет создание вспомогательного столбца со следующей формулой массива для идентификации повторяющихся и уникальных элементов:
{=ЕСЛИ(СУММ((—СОВПАД($A$2:$A$10;A2)))=1;»Уникальный»;»Дубль»)}
А затем используйте простую функцию СЧЁТЕСЛИ для подсчета уникальных значений:
=СЧЁТЕСЛИ(B2:B10; «Уникальный»)
А теперь посмотрим, как можно посчитать количество значений, которые появляются хотя бы один раз, то есть так называемых различных значений.
Подсчет различных значений.
Используйте следующую универсальное выражение:
{=СУММ(1 / СЧЁТЕСЛИ( диапазон ; диапазон ))}
Помните, что это формула массива, поэтому вам следует нажать Ctrl + Shift + Enter
, вместо обычного Enter.
Кроме того, вы можете использовать функцию СУММПРОИЗВ и записать формулу обычным способом:
=СУММПРОИЗВ(1 / СЧЁТЕСЛИ( диапазон ; диапазон ))
Например, чтобы сосчитать различные значения в диапазоне A2: A10, вы можете использовать выражение:
{=СУММ(1/СЧЁТЕСЛИ(A2:A10;A2:A10))}
или же
=СУММПРОИЗВ(1/СЧЁТЕСЛИ(A2:A10;A2:A10))
Этот способ подходит не только для подсчета в столбце, но и для диапазона данных. К примеру, у нас под имена отведено две колонки. Тогда делаем так:
{=СУММПРОИЗВ(1/СЧЁТЕСЛИ(A2:B10;A2:B10))}
Этот метод подходит для текста, чисел, дат.
Единственное ограничение – диапазон должен быть непрерывным и не содержать пустых ячеек и ошибок.
Если в вашем диапазоне данных есть пустые ячейки, то можно изменить:
{=СУММПРОИЗВ(1/СЧЁТЕСЛИ(A2:A10; A2:A10&»»))}
Тогда в расчёт попадёт и будет засчитана и пустая ячейка.
Как это работает?
Как вы уже знаете, мы используем функцию СЧЁТЕСЛИ, чтобы узнать, сколько раз каждый отдельный элемент встречается в указанном диапазоне. В приведенном выше примере, результат работы функции СЧЕТЕСЛИ представляет собой числовой массив: {3:2:2:1:3:2:1:2:3}.
После этого выполняется ряд операций деления, где единица делится на каждую цифру из этого массива. Это превращает все неуникальные значения в дробные числа, соответствующие количеству повторов. Например, если число или текст появляется в списке 2 раза, в массиве создаются 2 элемента равные 0,5 (1/2 = 0,5). А если появляется 3 раза, в массиве создаются 3 элемента 0,333333.
В нашем примере результатом вычисления выражения 1/СЧЁТЕСЛИ(A2:A10;A2:A10) является массив {0.333333333333333:0.5:0.5:1:0.333333333333333:0.5:1:0.5:0.333333333333333}.
Пока не слишком понятно? Это потому, что мы еще не применили функцию СУММ / СУММПРОИЗВ. Когда одна из этих функций складывает числа в массиве, сумма всех дробных чисел для каждого отдельного элемента всегда дает 1, независимо от того, сколько раз он появлялся. И поскольку все уникальные элементы отображаются в массиве как единицы (1/1 = 1), окончательный результат представляет собой общее количество всех встречающихся значений.
Как и в случае подсчета уникальных значений в Excel, вы можете использовать варианты универсальной формулы для обработки отдельно чисел, текста или же с учетом регистра.
Помните, что все приведенные ниже выражения являются формулами массива и требуют нажатия Ctrl + Shift + Enter
.
Подсчет различных значений без учета пустых ячеек
Если столбец, в котором вы хотите совершить подсчет, может содержать пустые ячейки, вам следует в уже знакомую нам формулу массива добавить функцию ЕСЛИ. Она будет проверять ячейки на наличие пустот (основная формула Excel, описанная выше, в этом случае вернет ошибку #ДЕЛ/0):
=СУММ(ЕСЛИ( диапазон <> «»; 1 / СЧЁТЕСЛИ( диапазон ; диапазон ); 0))
Вот как, к примеру, можно посчитать количество индивидуальных значений, игнорируя пустые ячейки:
Используем:
{=СУММ(ЕСЛИ(A2:A10<>»»;1/СЧЁТЕСЛИ(A2:A10; A2:A10); 0))}
Как видите, наш список состоит из трёх имён.
Подсчет различных чисел.
Чтобы посчитать различные числовые значения (числа, даты и время), используйте функцию ЕЧИСЛО:
= СУММ(ЕСЛИ(ЕЧИСЛО( диапазон ); 1 / СЧЁТЕСЛИ( диапазон ; диапазон ); «»))
Считаем, сколько имеется различных чисел в диапазоне A2: A10:
{=СУММ(ЕСЛИ(ЕЧИСЛО(A2:A10);1/СЧЁТЕСЛИ(A2:A10; A2:A10);»»))}
Результат вы можете посмотреть ниже.
Это достаточно простое и элегантное решение, но работает оно гораздо медленнее, чем выражения, которые используют функцию ЧАСТОТА для подсчета уникальных значений. Если у вас большие наборы данных, то целесообразно переключиться на формулу, основанную на расчёте частот.
И вот еще один способ подсчета чисел:
=СУММ(—(ЧАСТОТА(диапазон; диапазон)>0))
Применительно к примеру ниже:
=СУММ(—(ЧАСТОТА(A2:A10; A2:A10)>0))
Как видите, здесь игнорируются записи, в которых имеются буквы.
Пошагово разберём, как это работает.
Функция ЧАСТОТА возвращает массив цифр, которые соответствуют интервалам, заданным имеющимися числами. В этом случае мы сравниваем один и тот же набор чисел для массива данных и для массива интервалов.
Результатом является то, что ЧАСТОТА() возвращает массив, который представляет собой счетчик для каждого числового значения в массиве данных.
Это работает, потому что ЧАСТОТА() возвращает ноль для любых чисел, которые ранее уже появились в списке. Ноль возвращается и для текстовых данных. Поэтому полученный массив выглядит следующим образом:
{3:0:0:2:0:0}
Как видите, обрабатываются только числа. Ячейки A7:A10 игнорируются, потому что там текст. А функция ЧАСТОТА() работает только с числами.
Теперь каждое из этих чисел проверяем на условие «больше нуля».
Получаем:
{ИСТИНА:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ}
Теперь превращаем ИСТИНА и ЛОЖЬ в 1 и 0 соответственно. Делаем это при помощи двойного отрицания. Проще говоря, это двойной минус, который не меняет величину числа, но позволяет получить реальные числа, когда это вообще возможно:
{1:0:0:1:0:0}
А теперь функция СУММ складывает всё и получаем результат: 2.
Различные текстовые значения.
Чтобы посчитать отдельные текстовые записи в столбце, мы будем использовать тот же подход, который мы использовали для исключения пустых ячеек.
Как вы можете легко догадаться, мы просто добавим функцию ЕТЕКСТ и проверку условия:
=СУММ(ЕСЛИ(ЕТЕКСТ( диапазон ); 1 / СЧЁТЕСЛИ( диапазон ; диапазон ); «»))
Количество индивидуальных символьных значений посчитаем так:
{=СУММ(ЕСЛИ(ЕТЕКСТ(A2:A10);1/СЧЁТЕСЛИ(A2:A10; A2:A10);»»))}
Не забываем, что это формула массива.
Если в вашей таблице нет пустых ячеек и ошибок, то вы можете применить формулу, которая использует несколько функций: ЧАСТОТА, ПОИСКПОЗ, СТРОКА и СУММПРОИЗВ.
В общем виде это выглядит так:
=СУММПРОИЗВ(—(ЧАСТОТА(ПОИСКПОЗ (диапазон; диапазон;0); СТРОКА (диапазон)- СТРОКА (диапазон_первая_ячейка)+1)>0))
Предположим, у вас есть список имен сотрудников вместе с часами работы над проектом, и вы хотите знать, сколько человек в этом участвовали. Глядя на данные, вы можете увидеть, что имена повторяются. А вы хотите пересчитать всех, кто хотя бы раз появился в этом списке.
Применяем формулу массива:
{=СУММПРОИЗВ(— (ЧАСТОТА(ПОИСКПОЗ(A2:A10; A2:A10;0); СТРОКА(A2:A10) -СТРОКА(A2) +1)> 0))}
Она является более сложной, чем аналогичная, которая использует функцию ЧАСТОТА() для подсчета различных чисел. Это потому, что ЧАСТОТА() не работает с текстом. Поэтому ПОИСКПОЗ преобразует имена в номера позиций, которые может обрабатывать ЧАСТОТА().
Если какая-либо из ячеек в диапазоне пустая, вам необходимо использовать более сложную формулу массива, которая включает в себя функцию ЕСЛИ:
{= СУММ(ЕСЛИ(ЧАСТОТА(ЕСЛИ(данные <> «»;ПОИСКПОЗ(данные; данные; 0));СТРОКА(данные) -СТРОКА(данные_первая_ячейка) +1); 1))}
Примечание: поскольку логическая проверка в операторе ЕСЛИ содержит массив, то наше выражение сразу становится формулой массива, которая требует ввода через Ctrl+Shift+Enter. Поэтому же СУММПРОИЗВ была заменена на СУММ.
Применительно к нашему примеру это выглядит так:
{=СУММ(ЕСЛИ(ЧАСТОТА(ЕСЛИ(A2:A10 <> «»;ПОИСКПОЗ(A2:A10; A2:A10; 0));СТРОКА(A2:A10) -СТРОКА(A2) +1); 1))}
Теперь «сломать» этот расчет может только наличие ячеек с ошибками в исследуемом диапазоне.
Различные текстовые значения с условием.
Предположим, необходимо пересчитать, сколько наименований товаров заказал конкретный покупатель.
Чтобы решить эту проблему, вам может помочь этот вариант:
{=СУММПРОИЗВ((($A$2:$A$18=E2)) / СЧЁТЕСЛИМН($A$2:$A$18;$A$2:$A$18&»»; $B$2:$B$18;$B$2:$B$18&»»))}
Введите это в пустую ячейку, куда вы хотите поместить результат, F2, например. А затем нажмите Shift + Ctrl + Enter вместе, чтобы получить правильный результат.
Поясним: здесь A2:A18 это список покупателей, с учётом которого вы ограничиваете область расчётов, B2: B18 — перечень товаров, в котором вы хотите посчитать уникальные значения, Е2 содержит критерий, на основании которого подсчет ограничивается только конкретным покупателем.
Второй способ.
Для уникальных значений в диапазоне с критериями, вы можете использовать формулу массива, основанную на функции ЧАСТОТА.
{=СУММ(—(ЧАСТОТА(ЕСЛИ(критерий; ПОИСКПОЗ(диапазон; диапазон;0)); СТРОКА(диапазон) -СТРОКА(диапазон_первая_ячейкаl)+1)>0))}
Применительно к нашему примеру:
{=СУММ(—(ЧАСТОТА(ЕСЛИ(A2:A10 = E2; ПОИСКПОЗ(B2:B10; B2:B10;0)); СТРОКА(B2:B10) — СТРОКА(B2)+1) > 0))}
С учетом ограничений ЕСЛИ() функция ПОИСКПОЗ определяет порядковый номер только для строк, которые соответствуют критериям.
Если какая-либо из ячеек в диапазоне критериев пустая, вам необходимо скорректировать расчёт, добавив дополнительно ЕСЛИ для обработки пустых ячеек. Иначе они будут переданы в функцию ПОИСКПОЗ, которая в ответ сгенерирует сообщение об ошибке.
Вот что получилось после корректировки:
{=СУММ(— (ЧАСТОТА(ЕСЛИ(B2:B10 <> «»; ЕСЛИ(A2:A10 = E2; ПОИСКПОЗ(B2:B10; B2:B10;0))); СТРОКА(B2:B10) -СТРОКА(B2) +1)> 0))}
То есть все действия и расчёты мы производим, если в столбце B нам встретилась непустая ячейка: ЕСЛИ(B2:B10 <> «»….
Если у вас есть два критерия, вы можете расширить логику формулы путем добавления другого вложенного ЕСЛИ.
Поясним. Определим, сколько наименований товара находилось в первой партии первого покупателя.
Критерии запишем в G2 и G3.
В общем виде это выглядит так:
{=СУММ(—(ЧАСТОТА(ЕСЛИ(критерий1; ЕСЛИ(критерий2; ПОИСКПОЗ (диапазон; диапазон;0))); СТРОКА (диапазон) — СТРОКА (диапазон_первая_позиция) +1)> 0))}
Подставляем сюда реальные данные и получаем результат:
{=СУММ(—(ЧАСТОТА(ЕСЛИ(A2:A10=G2; ЕСЛИ(C2:C10=G3;ПОИСКПОЗ(B2:B10;B2:B10;0)));СТРОКА(B2:B10)-СТРОКА(B2)+1)>0))}
В первой партии 2 наименования товара, хотя и 3 позиции.
Различные числа с условием.
Если вам нужно пересчитать уникальные (с учётом первого вхождения) числа в диапазоне с учетом каких-то ограничений, можно использовать формулу, основанную на СУММ и ЧАСТОТА, и вместе с этим применять критерии.
{=СУММ(— (ЧАСТОТА(ЕСЛИ(критерий; диапазон); диапазон)> 0))}
Предположим, у нас есть перечень табельных номеров и количество отработанных часов по дням. Нужно сосчитать, сколько человек хотя бы раз отработали менее чем по 8 часов, то есть неполную смену.
Вот наша формула массива:
{=СУММ(— (ЧАСТОТА(ЕСЛИ(B2:B10 < 8; A2:A10); A2:A10)> 0))}
Как видите, таких случаев 3, но связаны они с двумя работниками.
Различные значения с учетом регистра.
Подобно подсчету уникальных, самый простой способ подсчета различных значений с учетом регистра – это добавить вспомогательный столбец с формулой массива, который идентифицирует нужные элементы, включая первые повторяющиеся вхождения.
Подход в основном такой же, как и тот, который мы использовали для подсчета уникальных значений с учетом регистра, с одним небольшим изменением:
{=ЕСЛИ(СУММ((—СОВПАД($A$2:$A2;$A2)))=1;»Уникальный»;»»)}
Как вы помните, все формулы массива в Excel требуют нажатия Ctrl + Shift + Enter
.
После того, как это выражение будет записано, вы можете посчитать «различные» значения с помощью обычной функции СЧЁТЕСЛИ, например:
=СЧЁТЕСЛИ(B2:B10; «Уникальный»)
Если вы не можете добавить вспомогательный столбец на свой рабочий лист, вы можете использовать следующую более сложную формулу массива для подсчета различных значений с учетом регистра без создания дополнительного столбца:
{=СУММ(ЕСЛИОШИБКА(1/ЕСЛИ($A$2:$A$10<>»»; ЧАСТОТА(ЕСЛИ(СОВПАД($A$2:$A$10; ТРАНСП($A$2:$A$10)); ПОИСКПОЗ(СТРОКА($A$2:$A$10); СТРОКА($A$2:$A$10)); «»); ПОИСКПОЗ(СТРОКА($A$2:$A$10); СТРОКА($A$2:$A$10))); 0); 0))}
Как видите, обе формулы дают одинаковые результаты.
Подсчет уникальных строк в таблице.
Подсчет уникальных / различных строк в Excel сродни пересчёту уникальных и различных значений. С той лишь разницей, что вы используете функцию СЧЁТЕСЛИМН вместо СЧЁТЕСЛИ, что позволяет вам указать сразу несколько столбцов для проверки уникальности.
Например, чтобы подсчитать уникальные строки на основе столбцов A (Имя) и B (Фамилия), используйте один из следующих вариантов:
Для уникальных строк:
{=СУММ(ЕСЛИ(СЧЁТЕСЛИМН(A3:A11;A3:A11; B3:B11;B3:B11)=1;1;0))}
Для различных строк:
{=СУММ(1/СЧЁТЕСЛИМН(A3:A11;A3:A11;B3:B11;B3:B11))}
Естественно, вы не ограничены только двумя столбцами. Функция СЧЁТЕСЛИМН может обрабатывать до 127 пар диапазон / критерий.
Как можно использовать сводную таблицу.
Вот обычная задача, которую все пользователи Excel должны время от времени выполнять. У вас есть список данных (к примеру, названий товаров), и нужно узнать количество уникальных позиций в этом списке. Как это сделать? Проще, чем вы думаете
В версиях Excel выше 2013 есть специальная функция, которая позволяет автоматически пересчитывать различные значения в сводной таблице. На следующем рисунке показано, как выглядит этот счетчик:
Чтобы создать сводную таблицу со счетчиком для определенного столбца, выполните следующие действия.
- Выберите данные для включения в сводную таблицу, перейдите на вкладку «Вставка» и нажмите кнопку «Сводная таблица» .
- В диалоговом окне «Создание сводной таблицы» выберите, следует ли разместить сводную таблицу на новом или существующем листе, и обязательно установите флажок «Добавить эти данные в модель данных» .
- Когда откроется сводная таблица, расположите области строк, столбцов и значений так, как вам нужно. Если у вас нет большого опыта работы со сводными таблицами Excel, могут оказаться полезными следующие подробные рекомендации: Создание сводной таблицы в Excel.
- Переместите поле, количество уникальных элементов которого вы хотите вычислить ( поле « Товар» в этом примере), в область « Значения» , щелкните его и выберите «Параметры значения поля…» из раскрывающегося меню.
- Откроется диалоговое окно , прокрутите вниз до операции «Число разных элементов» , которая является самым последним пунктом в списке, выберите ее и нажмите OK .
Вы также можете дать собственное имя своему счетчику, если хотите.
Готово! Вновь созданная сводная таблица будет отображать количество различных товаров, как показано на самом первом скриншоте в этом разделе.
Вот как можно подсчитать различные и уникальные значения в столбце и целиком в таблице Excel.
Благодарю вас за чтение и надеюсь увидеть вас снова. Пожалуйста, не переключайтесь!
Подсчет количества уникальных значений
Постановка задачи
Есть диапазон с данными, в котором некоторые значения повторяются больше одного раза:
Задача — подсчитать количество уникальных (неповторяющихся) значений в диапазоне. В приведенном выше примере, как легко заметить, на самом деле упоминаются всего четыре варианта.
Рассмотрим несколько способов ее решения.
Способ 1. Если нет пустых ячеек
Если вы уверены, что в исходном диапазоне данных нет пустых ячеек, то можно использовать короткую и элегантную формулу массива:
Не забудьте ввести ее как формулу массива, т.е. нажать после ввода формулы не Enter, а сочетание Ctrl+Shift+Enter.
Технически, эта формула пробегает по всем ячейкам массива и вычисляет для каждого элемента количество его вхождений в диапазон с помощью функции СЧЕТЕСЛИ (COUNTIF). Если представить это в виде дополнительного столбца, то выглядело бы оно так:
Потом вычисляются дроби 1/Число вхождений для каждого элемента и все они суммируются, что и даст нам количество уникальных элементов:
Способ 2. Если есть пустые ячейки
Если в диапазоне встречаются пустые ячейки, то придется немного усовершенствовать формулу, добавив проверку на пустые ячейки (иначе получим ошибку деления на 0 в дроби):
Вот и все дела.
Ссылки по теме
- Как извлечь из диапазона уникальные элементы и удалить дубликаты
- Как подсветить дубликаты в списке цветом
- Как сравнить два диапазона на наличие в них дубликатов
- Извлечение уникальных записей из таблицы по заданному столбцу с помощью надстройки PLEX
Подсчет количества уникальных значений среди повторяющихся
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Еще…Меньше
Предположим, что требуется определить количество уникальных значений в диапазоне, содержащем повторяющиеся значения. Например, если столбец содержит:
-
числа 5, 6, 7 и 6, будут найдены три уникальных значения — 5, 6 и 7;
-
строки «Руслан», «Сергей», «Сергей», «Сергей», будут найдены два уникальных значения — «Руслан» и «Сергей».
Существует несколько способов подсчета количества уникальных значений среди повторяющихся.
С помощью диалогового окна Расширенный фильтр можно извлечь уникальные значения из столбца данных и вставить их в новое местоположение. Затем с помощью функции ЧСТРОК можно подсчитать количество элементов в новом диапазоне.
-
Выделите диапазон ячеек или убедитесь, что активная ячейка находится в таблице.
Убедитесь в том, что диапазон ячеек содержит заголовок столбца.
-
На вкладке Данные в группе Сортировка и фильтр нажмите кнопку Дополнительно.
Появится диалоговое окно Расширенный фильтр.
-
Установите переключатель скопировать результат в другое место.
-
В поле Копировать введите ссылку на ячейку.
В противном случае нажмите Свернуть диалоговое окно для временного скрытия диалогового окна, выберите ячейку на листе, а затем нажмите Развернуть диалоговое окно .
-
Установите флажок Только уникальные записи и нажмите ОК.
Уникальные значения из выделенного диапазона будут скопированы в новое место, начиная с ячейки, указанной в поле Копировать.
-
В пустой ячейке под последней ячейкой диапазона введите функцию ЧСТРОК. Используйте диапазон скопированных уникальных значений в качестве аргумента, исключив заголовок столбца. Например, если уникальные значения содержатся в диапазоне B2:B45, введите =ЧСТРОК(B2:B45).
Для выполнения этой задачи используйте комбинацию функций ЕСЛИ, СУММ, ЧАСТОТА, ПОИСКПОЗ и ДЛСТР.
-
Назначьте значение 1 каждому из истинных условий с помощью функции ЕСЛИ.
-
Вычислите сумму, используя функцию СУММ.
-
Подсчитайте количество уникальных значений с помощью функции ЧАСТОТА. Функция ЧАСТОТА пропускает текстовые и нулевые значения. Для первого вхождения заданного значения эта функция возвращает число, равное общему количеству его вхождений. Для каждого последующего вхождения того же значения функция возвращает ноль.
-
Узнайте позицию текстового значения в диапазоне с помощью функции ПОИСКПОЗ. Возвращенное значение затем используется в качестве аргумента функции ЧАСТОТА, что позволяет определить количество вхождений текстовых значений.
-
Найдите пустые ячейки с помощью функции ДЛСТР. Пустые ячейки имеют нулевую длину.
Примечания:
-
Формулы, приведенные в этом примере, должны быть введены как формулы массива. Если у вас установлена текущая версия Microsoft 365, можно просто ввести формулу в верхней левой ячейке диапазона вывода и нажать клавишу ВВОД, чтобы подтвердить использование формулы динамического массива. Иначе формулу необходимо вводить с использованием прежней версии массива, выбрав диапазон вывода, введя формулу в левой верхней ячейке диапазона и нажав клавиши CTRL+SHIFT+ВВОД для подтверждения. Excel автоматически вставляет фигурные скобки в начале и конце формулы. Дополнительные сведения о формулах массива см. в статье Использование формул массива: рекомендации и примеры.
-
Чтобы просмотреть процесс вычисления функции по шагам, выделите ячейку с формулой, а затем на вкладке Формулы в группе Зависимости формул нажмите Вычислить формулу.
-
Функция ЧАСТОТА вычисляет частоту появления значений в диапазоне и возвращает вертикальный массив чисел. С помощью функции ЧАСТОТА можно, например, подсчитать количество результатов тестирования, попадающих в определенные интервалы. Поскольку данная функция возвращает массив, ее необходимо вводить как формулу массива.
-
Функция ПОИСКПОЗ выполняет поиск указанного элемента в диапазоне ячеек и возвращает относительную позицию этого элемента в диапазоне. Например, если диапазон A1:A3 содержит значения 5, 25 и 38, формула =ПОИСКПОЗ(25;A1:A3;0) возвращает значение 2, так как элемент 25 является вторым в диапазоне.
-
Функция ДЛСТР возвращает число символов в текстовой строке.
-
Функция СУММ вычисляет сумму всех чисел, указанных в качестве аргументов. Каждый аргумент может быть диапазоном, ссылкой на ячейку, массивом, константой, формулой или результатом выполнения другой функции. Например, функция СУММ(A1:A5) вычисляет сумму всех чисел в ячейках от A1 до A5.
-
Функция ЕСЛИ возвращает одно значение, если указанное условие дает в результате значение ИСТИНА, и другое, если условие дает в результате значение ЛОЖЬ.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
См. также
Фильтр уникальных значений или удаление повторяющихся значений
Нужна дополнительная помощь?
Задачу подсчета уникальных строк можно свести к задаче подсчета уникальных значений в одностолбцовом списке.
В этой статье будем считать строки совпадающими, если соответствующие значения в столбцах
Группа товаров
и
Товар
совпадают (см.
файл примера
).
Строки 1, 2 и 3 считаются совпадающими. Также считаются совпадающими 4-5, еще одна пара 6 и 8, и, наконец 7 и 9.
Уникальными
(различающимися) строками считаются строки 1, 4, 6, 7 (именно такой результат выдает
Расширенный фильтр
с опцией
Только уникальные записи. См.
статью
Подсчет уникальных строк с помощью Расширенного фильтра
). Уникальные строки выделены с помощью
Условного форматирования
.
Для подсчета уникальных строк создадим служебный столбец
Е
, в пятую строку которого введем формулу
=B5&C5
и скопируем ее с помощью
Маркера заполнения
до конца таблицы. В результате получим столбец значений, по которому можно сделать сравнение строк. Строки будут одинаковыми, если соответствующие значения в столбце
Служебный
совпадают.
Из статьи
Подсчет уникальных ТЕКСТовых значений
возьмем формулу для подсчета:
=СУММПРОИЗВ((E5:E13<>»»)/СЧЁТЕСЛИ(E5:E13;E5:E13&»»))
СОВЕТ:
Предложенный способ определения уникальности строк имеет ограничение: если 2 поля являются числовыми, то вполне вероятна ситуация, когда значения в столбце
Служебный
совпадают, а строки на сам деле разные. Например, когда первая строка содержит 2 и 110, а вторая 21 и 10. Как выйти из этой ситуации рассказано в статье
Отбор уникальных СТРОК
.
На чтение 11 мин. Просмотров 13.7k.
Содержание
- Числовые значения
- Текстовые значения
- В диапазоне с СЧЁТЕСЛИ
Числовые значения
В диапазоне
= СУММ(—(ЧАСТОТА(данные; данные)>0))
Если вам нужно подсчитать уникальные числовые значения в диапазоне, вы можете использовать формулу, которая использует частотную функцию вместе с функцией СУММ.
Предположим, у вас есть список номеров сотрудников вместе с часами работы над проектом, и вы хотите знать, сколько сотрудники работали над этим проектом. Глядя на данные, вы можете увидеть одно и то же число сотрудников более одного раза, так что вы хотите подсчитать уникальные номера служащих, которые появляются в списке.
ID номера работников появляются в диапазоне B5: B14. Для того, чтобы получить количество уникальных номеров, вы можете использовать следующую формулу:
= СУММ(— (ЧАСТОТА(B5:B14; B5:B14) > 0))
Функция ЧАСТОТА возвращает массив значений, которые соответствуют интервалам. В этом случае мы сравниваем один и тот же набор чисел для массива данных и для массива интервалов.
Результатом является то, что ЧАСТОТА возвращает массив значений, которые представляют собой счетчик для каждого числового значения в массиве данных. Это работает, потому что ЧАСТОТА имеет специальную функцию, которая автоматически возвращает ноль для любых чисел, которые появляются более чем один раз в массиве данных, поэтому обратный массив выглядит следующим образом:
{3; 0; 0; 2; 0; 3; 0; 0; 2; 0; 0}
Далее, каждое из этих значений проверяется, чтобы было больше нуля. Результат выглядит следующим образом:
{ИСТИНА; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ЛОЖЬ}
Теперь каждая ИСТИНА в списке представляет собой уникальный номер в списке, и нам просто нужно сложить Истинные значения с СУММ.
Однако СУММ не будет добавлять логические значения в массиве, так что мы должны сначала превратить значения в 1 или ноль. Это делается с помощью двойного минуса (двойной унарный). В результате массив только 1 или 0.
{1; 0; 0; 1; 0; 1; 0; 0; 1; 0; 0}
И, наконец, СУММ добавляет эти значения и рассчитывает общее число, которое в данном случае равно 4.
Примечание: вы можете также использовать СУММПРОИЗВ для сложения элементов в массиве.
Использование СЧЁТЕСЛИ вместо ЧАСТОТА для подсчета уникальных значений
Другой способ подсчета уникальных числовых значений состоит в использовании СЧЁТЕСЛИ вместо ЧАСТОТА. Это гораздо проще, но нужно учитывать, что с помощью СЧЁТЕСЛИ на больших наборах данных для подсчета уникальных значений может вызвать проблемы с производительностью. Формула на основе частотных полос, хотя и более сложная, вычисляет гораздо быстрее.
С критериями
{=СУММ(—(ЧАСТОТА(ЕСЛИ(criteria;значения);значения)>0))}
Если вам нужно подсчитать уникальные числовые значения в диапазоне с критериями, можно использовать формулу, основанную на СУММ и частотной функции, вместе с функцией применять критерии.
Например, предположим, у вас есть список номеров сотрудников, которые записывали часы в двух разных зданиях: здание А и здание Б. Вы хотите знать, сколько уникальных сотрудников регистрирует время в каждом здании. Так как одно и то же число сотрудников более одного раза в списке, то вам нужна формула, которая будет рассчитывать уникальные идентификаторы сотрудника в здании.
В показанном примере, формула в G4 является:
{= СУММ(— (ЧАСТОТА(ЕСЛИ(B5:B14 = «A»; C5:C14); C5:C14)> 0))}
Примечание: это формула массива и должна быть введена с помощью сочетания клавиш Ctrl+Shift+Enter
Функция ЧАСТОТА рассчитывает массив значений, которые соответствуют массиву_интервалов. В этом случае мы подставлем «отфильтрованный» набор идентификаторов для массива данных, а также полный набор идентификаторов для массива_интервалов. Фильтрация осуществляется с помощью функции ЕСЛИ:
ЕСЛИ (B5:B14 = «А»; С5:С14)
Которая в примере рассчитывает это:
{81400; 81405; 81405; 82364; 82364; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ}
Обратите внимание на то, что все идентификаторы не в здании А были преобразованы в ЛОЖЬ. Далее, ЧАСТОТА рассчитывает массив значений, которые представляют собой счетчик для каждого числового значения в массиве данных. Это работает, потому что ЧАСТОТА имеет специальную функцию, которая автоматически возвращает ноль для любых чисел, которые появляются более чем один раз в массиве данных, поэтому обратный массив выглядит следующим образом:
{1; 2; 0; 2; 0; 0; 0; 0; 0; 0; 0}
Далее, каждое из этих значений проверяется, чтобы было больше нуля. Результат выглядит следующим образом:
{ИСТИНА; ИСТИНА; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ}
Каждая ИСТИНА в списке представляет собой уникальный номер в списке, и нам просто нужно сложить Истинные значения с СУММ.
Однако СУММ не будет добавлять логические значения в массиве, так что мы должны сначала превратить значения в 1 или ноль. Это делается с помощью двойного минуса (двойной унарный). В результате массиве только 1 или 0.
{1; 1; 0; 1; 0; 0; 0; 0; 0; 0; 0}
И, наконец, СУММ добавляет эти значения и рассчитывает общее число, которое в данном случае составляет 3.
Текстовые значения
В диапазоне
=СУММПРОИЗВ(—(ЧАСТОТА(ПОИСКПОЗ (данные;данные;0); СТРОКА (данные)- СТРОКА (данные.первая ячейка)+1)>0))
Если вам нужно подсчитать уникальные текстовые значения в диапазоне, вы можете использовать формулу, которая использует несколько функций: ЧАСТОТА, ПОИСКПОЗ, СТРОКА и СУММПРОИЗВ.
Кроме того, можно использовать СЧЁТЕСЛИ, как описано ниже.
Предположим, у вас есть список имен сотрудников вместе с часами работы над проектом, и вы хотите знать, сколько сотрудники работали над этим проектом. Глядя на данные, вы можете увидеть, что имена повторяются, а вы хотите подсчитать уникальные имена.
Имена работников находятся в диапазоне B5:B14. Для того, чтобы получить количество уникальных имен, вы можете использовать следующую формулу:
{=СУММПРОИЗВ(— (ЧАСТОТА(ПОИСКПОЗ(B5:B14; B5:B14;0); СТРОКА(B5:B14) -СТРОКА(B5) +1)> 0))}
Эта формула является более сложной, чем аналогичная формула, которая использует ЧАСТОТА для подсчета уникальных числовых значений, поскольку ЧАСТОТА не работает с нечисловыми значениями. В результате, большая часть формулы просто преобразует нечисловые данные в числовые данные, которые может обрабатывать ЧАСТОТА.
Функция ПОИСКПОЗ используется, чтобы получить позицию каждого элемента, который появляется в данных. Поскольку ПОИСКПОЗ только рассчитывает позицию значения «Первое совпадение», которое появляется более чем один раз, в данных тот же диапазон.
Поскольку ПОИСКПОЗ принимает и массив значений для значения совпадений аргумента, она рассчитывает массив позиций. Они подаются к частотному в аргументе массива данных.
{1; 1; 1; 4; 4; 6; 6; 6; 9; 9}
Аргумент, хранимый в массиве строится из этой части формулы:
СТРОКА(B5:B14) -СТРОКА(B5) +1
который использует номер строки для каждого элемента данных и номер строки первого элемента данных для построения прямого последовательного массива:
{1; 2; 3; 4; 5; 6; 7; 8; 9; 10}
Функция ЧАСТОТА возвращает массив значений, которые соответствуют «хранимым». В этом случае мы подставляем массив, рассчитываемый ПОИСКПОЗ для массива данных, а также рассчитываемый массив построчного массива выше, как массив хранимых.
Результатом является то, что ЧАСТОТА рассчитывает массив значений, которые указывают на количество, которое появляется каждое значение в массиве данных. ЧАСТОТА имеет специальную функцию, которая автоматически рассчитывает ноль для любых чисел, которые появляются более чем один раз в массиве данных, поэтому результирующий массив выглядит следующим образом:
{3; 0; 0; 2; 0; 3; 0; 0; 2; 0; 0}
Далее, каждое из этих значений преобразуется в значение ИСТИНА или ЛОЖЬ, которые > 0, а затем в 1 или ноль с двойным отрицанием (двойной минус). Это делается потому что СУММПРОИЗВ нужны числовые значения, она не может работать непосредственно с текстом или логическими значениями.
Внутри функции СУММПРОИЗВ конечный массив выглядит следующим образом:
{1; 0; 0; 1; 0; 1; 0; 0; 1; 0; 0}
И, наконец, СУММПРОИЗВ просто добавляет эти значения и рассчитывает общее число, которое в данном случае равно 4.
Обработка пустых ячеек в диапазоне
Если какая-либо из ячеек в диапазоне пустая, и вы хотите использовать ЧАСТОТА вместо СЧЁТЕСЛИ, вам необходимо использовать более сложную формулу массива, которая включает в себя ЕСЛИ:
{= СУММ(ЕСЛИ(ЧАСТОТА(ЕСЛИ(данные <> «»;ПОИСКПОЗ(данные; данные; 0));СТРОКА(данные) -СТРОКА(данные.первая ячейка) +1); 1))}
Примечание: поскольку логическая проверка в операторе ЕСЛИ содержит массив, то формула автоматически становится формулой массива, которая требует Ctrl+Shift+Enter. Поэтому СУММПРОИЗВ был заменен СУММ.
Рассмотрим формулу изнутри, ЕСЛИ требуется, потому что ПОИСКПОЗ рассчитает # N / A, если значение совпадений содержит пустые значения. Тестируя для пустых значений с данными <> «», в том числе и ПОИСКПОЗ как значение, если оно истинно, то результирующий массив будет содержать номера в сочетании с ЛОЖЬ:
{1; 1; ЛОЖЬ; 4; 4; 6; 6; ЛОЖЬ; 9; 9}
которая подается ЧАСТОТА, что и массив данных. ЧАСТОТА будет рассчитывать массив вроде этого:
{2; 0; 0; 2; 0; 2; 0; 0; 2; 0; 0}
Элементы в этом массиве преобразуются либо в 1, или ЛОЖЬ с окончательным (внешним) ЕСЛИ заявлением. Результат выглядит следующим образом:
{1; ЛОЖЬ; ЛОЖЬ; 1; ЛОЖЬ; 1; ЛОЖЬ; ЛОЖЬ; 1; ЛОЖЬ; ЛОЖЬ}
СУММ затем складывает 1 и рассчитывает 4.
Эта формула из замечательной книги Майка Гивина по формулам массива.
Использование СЧЁТЕСЛИ вместо ЧАСТОТЫ для подсчета уникальных значений
Другой способ подсчета уникальных числовых значений состоит в использовании СЧЁТЕСЛИ вместо ЧАСТОТЫ. Эта формула гораздо проще, но нужно учитывать, что использование СЧЁТЕСЛИ на больших наборах данных для подсчета уникальных значений, может вызвать проблемы с производительностью. Формула на основе ЧАСТОТА, хоть и более сложная, но вычисляет гораздо быстрее.
С критериями
{=СУММ(—(ЧАСТОТА(ЕСЛИ(критерий;ПОИСКПОЗ(значение; значение;0));СТРОКА(значение)-СТРОКА(значение.первая ячейкаl)+1)>0))}
Для уникальных значений в диапазоне с критериями, вы можете использовать формулу массива, основанную на функции ЧАСТОТА.
Предположим, у вас есть список имен сотрудников вместе с часами работы над проектом, и вы хотите знать, сколько сотрудники работали над этим проектом. Глядя на данные, вы можете увидеть, что имена повторяются, а вы хотите подсчитать уникальные имена.
В показанном примере формула в G5 является:
= {СУММ(—(ЧАСТОТА(ЕСЛИ(C5:C11 = G4;СТРОКА(B5:B11; B5:B11;0));СТРОКА(B5:B11) — СТРОКА(B5)+1) > 0))}
Эта формула использует ЧАСТОТА для подсчета уникальных числовых значений, которые получены с помощью функции ПОИСКПОЗ, которая сравнивает все значения против самих себя, чтобы определить позицию.
Функция ПОИСКПОЗ используется, чтобы получить позицию каждого элемента, который появляется в данных. Поскольку ПОИСКПОЗ рассчитывает только позиции значения «Первое совпадение», которые появляются более чем один раз, в данных рассчитывается то же число.
С помощью ЕСЛИ ПОИСКПОЗ рассчитывает только для строк, которые соответствуют критериям.
В конце концов, массив позиций, генерируемых ПОИСКПОЗ подаются к частотному в аргументе массива данных.
Аргумент, хранимый в массиве, строится из этой части формулы:
СТРОКА(B5:B11) -СТРОКА(B5) +1
который использует номер строки для каждого элемента данных и номер строки первого элемента данных для построения прямого, последовательного массива:
{1; 2; 3; 4; 5; 6; 7; 8; 9; 10}
Функция ЧАСТОТА рассчитывает массив значений, которые соответствуют «хранимым». В этом случае мы подставляем один и тот же набор чисел, как для массива данных и хранимых для массива.
Результатом является то, что ЧАСТОТА рассчитывает массив значений, которые указывают на количество, которое появляется каждое значение в массиве данных. Это работает, потому что ЧАСТОТА запрограммирована так, чтобы рассчитывать ноль для любых чисел, которые появляются более чем один раз в массиве данных.
Далее, каждое из этих значений преобразуется в значение ИСТИНА или ЛОЖЬ, которые > 0, а затем в 1 или ноль с двойным отрицанием (двойной минус). Это сделано, чтобы превратить все ненулевые значения в 1.
Наконец, СУММПРОИЗВ просто складывает эти значения и рассчитывает общее число.
Примечание: это формула массива и должна быть введена с помощью Ctrl + Shift + Enter.
Обработка пустых ячеек в диапазоне
Если какая-либо из ячеек в диапазоне пустая, вам необходимо скорректировать формулу, добавив дополнительно ЕСЛИ для предотвращения пустых клеток, передающуюся в функцию ПОИСКПОЗ, которая сгенерирует сообщение об ошибке. Формула:
{= СУММ(— (ЧАСТОТА(ЕСЛИ(B5:B11 <> «»; ЕСЛИ(C5:C11 = G4; ПОИСКПОЗ(B5:B11; B5:B11;0))); СТРОКА(B5:B11) -СТРОКА(B5) +1)> 0))}
С двумя критериями
Если у вас есть два критерия, вы можете расширить логику формулы путем добавления другого вложенного ЕСЛИ:
= {СУММ(— (ЧАСТОТА(ЕСЛИ(c1; ЕСЛИ(c2; ПОИСКПОЗ (значения;значения;0))); СТРОКА (значения) — СТРОКА (значения.первая позиция) +1)> 0))}
Там, где c1 = критерий1, c2 = критерий2 и значения = диапазон значений.
Взято из замечательной книги Майка Гивина по формулам массива, Control-Shift-Enter.
В диапазоне с СЧЁТЕСЛИ
=СУММПРОИЗВ(1/СЧЁТЕСЛИ(данные;данные))
Если вам нужно подсчитать количество уникальных значений в диапазоне ячеек, вы можете использовать формулу, которая использует СЧЁТЕСЛИ и СУММПРОИЗВ.
СЧЁТЕСЛИ находится внутри диапазона данных и подсчитывает количество раз, которое появляется каждое отдельное значение данных. Результатом является массив чисел, который выглядит следующим образом:
{3; 3; 3; 2; 2; 3; 3; 3; 2; 2}.
После того, как СЧЁТЕСЛИ заканчивает, результаты используются в качестве делителя, 1 в качестве числителя. Значения, которые появляются в данных, после появляются в массиве как 1, но значения, которые появляются несколько раз будут отображаться как дробные значения, которые соответствуют множеству. (Т.е. значение, которое появляется в 5 раз, данные будут генерировать 5 элементов в массиве со значением 1/5 = 0,2).
Наконец, функция СУММПРОИЗВ суммирует все значения в массиве и рассчитывает результат.
Обработка пустых ячеек
Если данные могут содержать пустые ячейки, необходимо скорректировать формулу следующим образом:
=СУММПРОИЗВ(1/СЧЁТЕСЛИ(данные; данные&»»))
Данные &»» выражение предотвращает нули массива, созданного СЧЁТЕСЛИ, когда имеются пустые ячейки данных. Она делает это путем обеспечения того, что критерии для пустой ячейки «», а не ноль. Это важно, так как ноль в делителе выбросит #ДЕЛ/0. Так что эта версия формулы не будет выдавать ошибку, когда есть пустые ячейки, но она будет включать в себя пустые ячейки в счете. Если вы хотите исключить пустые ячейки в счете, используйте:
=СУММПРОИЗВ((данные <> «»)/СЧЁТЕСЛИ(данные;данные и «»))
Низкая производительность?
Это крутая и элегантная формула, но она вычисляет гораздо медленнее, чем формулы, которые используют ЧАСТОТА для подсчета уникальных значений. Для больших наборов данных, вы можете переключиться на формулу, основанную на частотную функцию.
Подсчет Уникальных ТЕКСТовых значений в MS EXCEL
Смотрите такжеКазанский TextCompare For Each
Then USL(UBound(USL)) = по 44 строку, и не прощеУникальные = D.Count строкам A…:KN…. Количество If Application.Evaluate(Replace(rngCond(I, 1),НО возникли сомнения,Start! = Timer того что бы случайных чисел вЕсли пустые неDim iCell As на самом деле одним и двумя
Задача
Произведем подсчет уникальных текстовых, ваш метод я x In w Dia(i, 1) ReDim будет быстрее: , но быстрееEnd Function
строк в оригинале
«,», «.») &
а С ЛЮБЫМИOn Error Resume пересчёт отключить надо диапазоне 1…200 000. считаем за уникальные Range упоминаются всего четыре
условиями. значений в диапазоне обязательно завтра испробую. i = i
Preserve USL(1 To
For Each IC точно).djon2012
1000, значения по Conditions(J + 1)) ЛИ ТИПАМИ ДАННЫХ Next лесть в настройки,
GuestAlex_STSet Диапазон = варианта.Про подсчет уникальных текстовых ячеек.А так написал + 1 If UBound(USL) + 1)
In Диапазон_условия icvНаписал функцию для
: Michael_S спасибо за строкам A…:KN…. постоянно Then arrFlag(Int(J / это будет корректноMyArray = [a1:a12000] а это мало: да, коллекции медленнее: Михаил, Intersect(Диапазон.Parent.UsedRange, Диапазон)Рассмотрим несколько способов ее и числовых значенийСначала поясним, что значит тупо макрос, выводящий Not IsObject(.Item(x)) Then End If End = IC.Value If этой задачи, но
ваш вариант, обязательно изменяются. Мой вопрос: 2)) = True работать? Ведь обFor Each a кто делает (я чем массив, нотак может бытьOn Error Resume решения. (без условий) можно
подсчет уникальных значений. массив профессий и Set .Item(x) = If End If LCase(icv) = LCase(Условие) 6000 строк она
попробую и отпишусь! существует ли более Else If rngCond(I, ошибке работы макроса In MyArray вообще ещё не скорость выявления уникальности
excel2.ru
Подсчет Уникальных значений с условиями в MS EXCEL
и будет работать NextЕсли вы уверены, что в
прочитать в статье Подсчет Пусть имеется массив численность рядом с New Collection .Item(x).Add Next ReDim Preserve Then For Each глотает 30 секундdjon2012 быстрый способ формулами 1) Like Conditions(J никак не узнаешь,
Задача1
Col.Add a, CStr(a) встречал таких сотрудников ключей очень высока
(честно говоря, дажеWith New Collection исходном диапазоне данных Уникальных ТЕКСТовых значений текстовых значений {«а»,»b», ними. 0, q(i, 1) USL(1 To UBound(USL)
RC In Диапазон.Rows(IC.row).Cells ..=(: Michael_S ваш вариант или макросом произвести + 1) Then
т.к. включен обработчикNext a кто знает как (подразумеваю, что ключи не проверял), ноFor Each iCell нет пустых ячеек,
Задача2
в MS EXCEL и Подсчет»а»,»а»,»а»Самый последнейший вопрос:
Next ReDim w(1
— 1) Select rcv = RC.ValuePublic Enum MTD очень удобный, я эти вычисления? arrFlag(Int(J / 2)) ошибок
’Если работа с это делается). А там хранятся упорядоченно) в вашем примере In Диапазон то можно использовать Уникальных ЧИСЛОвых значений}. При подсчете уникальныхПочему функция
Задача3
To Условие.Count, 1 Case metod Case If rcv <>
[КОЛИЧЕСТВО_УНИ] = 0 проверил его наСпасибо!
= True EndЯ с коллекциями коллекцией далее неприемлема, вот уровень безопасности — в этом теряется вся простотаIf iCell.Value <> короткую и элегантную
в MS EXCEL. игнорируются все повторы,Function MyFunc() as To 1) i КОЛИЧЕСТВО_УНИ СВОД_УСЛ = «» And rcv [МАССИВ_УНИ] = 1 своих данных. Условияjakim If Next If знаком мало, поэтому то перебросить её АЙтишники всегда ставят и выигрыш. Еще
и элегантность предложенной «» Then .Add формулу массива: В этой статье
т.е. значения выделенные variant MyFunc =
excel2.ru
Подсчет количества уникальных значений
Постановка задачи
= 0 For UBound(USL) Case МАССИВ_УНИ <> 0 Then End Enum Public
проведения расчетов одинаковы: Извините, но я WorksheetFunction.And(arrFlag) = True и сомневаюсь… в массив высокий и тут быстрее конструкция dictionarys.. kim формулы…
iCell.Value, Trim(iCell.Value)Не забудьте ввести ее
Способ 1. Если нет пустых ячеек
рассмотрим более сложныежирным array(«Арг1″,»Арг2″,»Арг3») End Functionпри Each x In СВОД_УСЛ = USL() SHT = True
Function СВОД_УСЛ(Диапазон As для всех тестов не вижу никакой Then .Add CStr(cl(I,Попытки вместо значенияReDim NewMyArray(1 To
уже необходимы знания и удобнее. НоНу, разве можноNext как формулу массива, варианты с условиями.. Соответственно, подсчитываются остальные вводе её в Условие.Value i = End Select End For x = Range, Условие As приведенных выше постами.
связи между описанием 1)), cl(I, 1) добавлять только ключ: Col.Count) что бы их требует подключения доп сравнить по трудоёмкости
Способ 2. Если есть пустые ячейки
СЧЁТ_РАЗНЫХ = .Count т.е. нажать послеПусть имеется таблица с значения, т.е. «а» Excel (как массив) i + 1 Function 1 To UBound(USL)
Variant, _ Диапазон_условия
planetaexcel.ru
Подсчет количества уникальных значений в массиве
Скорость выполнения во и приложением.
If Err =If tmpArr(i, j)For i = (макросы) включить. библиотеки. написания и возможномуEnd With ввода формулы не перечнем продаж по и «b». Ответ у меня отображается w(i, 1) =Добавлено через 5 минут
If USL(x) =
As Range, metod всех тестах яgling 0 Then СЧЕТУНИКЕСЛИМН
<> «» Then 1 To Col.Count
Так что этоAlex_ST
при этом количествуEnd Function
Enter, а сочетание
продавцам. очевиден: количество уникальных
только самый первый .Item(x).Count Next EndИспользуя параметр «МАССИВ_УНИ»
rcv Then SHT As MTD) Dim
сравнивал с формулой
: Здравствуйте. Но в = СЧЕТУНИКЕСЛИМН +
.Add «», tmpArr(i,
’ NewMyArray(i) = не одно и
: По просьбам слушателей
ошибок формулы:Alex_ST Ctrl+Shift+Enter.
Требуется подсчитать сколько различных
значений равно 2. элемент массива?
With СЧЕТ_УСЛ = ты получаешь массив. = False End IC As Range
из моего примера.Ваш
КО пусто.
1 Else Err.Clear j)
Col(i) тоже…
во время обеденного=СУММПРОИЗВ(1/СЧЁТЕСЛИ(A4:P16;A4:P16))
: К стати, kim,
Технически, эта формула пробегает товаров продал конкретный
Произведем подсчет числа уникальныхВесь день матюкался! w End FunctionФункцию
Вызывая функцию из
If Next If
Dim RC As
вариант с пользовательской
djon2012 End If Endк ускорению не
Cells(i, 2) =Hugo перерыва (раньше работаи формулу массива не посоветуете, по всем ячейкам
продавец. Например, Вася текстовых значений в
Bati4eli надо вводить в
ячейки листа, ты SHT Then USL(UBound(USL)) Range Dim icv
функцией: Да действительно прикрепил If Next End привели.
Col(i): У меня есть мешала) сделал сравнение
={СУММ(1/(ЕСЛИ(СЧЁТЕСЛИ(A4:P16;A4:P16);СЧЁТЕСЛИ(A4:P16;A4:P16);1)))-СЧЁТЕСЛИ(A4:P16;»»)}а как в массива и вычисляет
продал 1 товар1, диапазоне: Одномерный массив в столбец С4:С282 с не можешь весь = rcv ReDim As Variant Dimв 4,5 раза медленнее не тот файл,
With End FunctionОлег55Next такие цифры при
разных методов подсчётаКазанский формуле =СУММПРОИЗВ(1/СЧЁТЕСЛИ(A4:P16;A4:P16)) обойти для каждого элемента 2 Товара2 иA7:A15
Excel представляется 1 помощью Ctrl+Shift+Enter. Расчет массив поместить в Preserve USL(1 To rcv As Variantчем вариант формулами ошипочка вышла, прикрепляюJack Famous: Доброе утро, уважаемыеCells(4, 5) = копировании 3000 уникальных
числа уникальных значений: Вкладывать worksheetfunction’ы так ошибку #ДЕЛ/0! если
количество его вхождений 1 Товар4 (выделено(см. файл примера). строкой и несколькими занимает доли секунды, одну ячейку. UBound(USL) + 1) Dim x As из моего примера
правильный файл. Извините!: Sanja, какая крутая
знатоки Excel!
Timer — Start из 11000 макросами:
в диапазоне.
нельзя.
в диапазоне попадается в диапазон с
зеленым). Всего 3
Диапазон может содержать
столбцами.
результат совпадает сВозможно помогут ввод
End If End
Long Dim y в 1 посту.
Светлый UDF’ка
Пожалуйста, помогите вCells(4, 6) =Degassad 4.171125Конечно, создавать «массивFunction СЧЁТ_РАЗНЫХ_2(Диапазон As хотя бы одна помощью функции разных товара.
пустые ячейки.В данном случае существующим: Код =СЧЕТ_УСЛ(ИСТОЧНИК!A:A;A4:A282;ИСТОЧНИК!B:B) массива твоих функций If Next End
As Long Dim
Спасибо !!!
: Добрый день!
пасиба))) ячейке вычислить количество Col.Count
For Each 1.625004 из миллиона случайных
Range) As Long
пустая ячейка?СЧЕТЕСЛИЭто можно подсчитать формулой =СУММПРОИЗВ((A13:A21=A7)/СЧЁТЕСЛИМН(B13:B21;B13:B21;A13:A21;A13:A21)),Решение
вам надо выделить
KoGG в нужный диапазон If Next
USL() As VariantpabchekФормула массива (Ctrl+Shift+Enter):alex1210 точек сети Магнит,[CalcTime] = Timer
For i 2.422002 чисел в диапазоне’=СУММПРОИЗВ(1/СЧЁТЕСЛИ(Диапазон;Диапазон))kim(COUNTIF) которая будет работатьЗапишем формулу =СУММПРОИЗВ((A7:A15<>»»)/СЧЁТЕСЛИ(A7:A15;A7:A15)) на листе область: Кстати, оптимальнее всего как формул массиваBati4eli Dim SHT As
: Если скорость гораздо=СУММ(—(ПОИСКПОЗ(A1:KN1;A1:KN1;)=СТОЛБЕЦ(A:KN))): Sanja, Jack Famous, по которым хотя
— StartDictionary 1.530991 1…200 000″ я
СЧЁТ_РАЗНЫХ_2 = Evaluate(«SumProduct(1/CountIf(«
: =СУММПРОИЗВ(1/СЧЁТЕСЛИ(A4:P16;A4:P16&»»))-1
. Если представить это только с версии
Если в диапазоне кроме из 1 строки в данной задаче ({}), хотя легче: Вот я дурак.. Boolean Application.Volatile x более важна компактностиПо быстродействию не доброго времени, подскажите бы в однойEnd Sub
AdvFilter 0.280985355 не стал, т.к. & Диапазон.Address &Alex_ST в виде дополнительного MS EXCEL 2007 текстовых значений содержатся и 3 столбцов, вообще убрать функцию, и понятнее будет я думал, что = Диапазон.Row + и красивости, могу скажу, надо на ячейки B2:B16 какое товарной накладной начисленSub btnDictionary_Click()
Сами коды: времени жалко, но
«,» & Диапазон.Address: Спасибо. столбца, то выглядело из-за функции СЧЁТЕСЛИМН().
также и числа, в строке формул а на листе вызывать функцию из
этот цикл в Диапазон.Rows.Count — 1 предложить модификацию формулы больших массивах проверять. условие выполняют, не бонус (т.е. бонусDim NewMyArray, MyArray,Sub btnDeggasad_Click() с меньшим размером & «))»)А почему -1 бы оно так:Изменив в ячейке
то формула подсчитает ввести источник рядом с процедуры и в цикле не особо y = Диапазон.Parent.UsedRange.Rows.Count Михаила (djon2012
могу разобраться >0). DDim aOld, aNew, попробовал.End Function в конце формулыПотом вычисляются дроби
А7 и их. Чтобы=MyFunc() суммой добавить колонку ней же делать увеличит время работы! If x >
MCH: Спасибо Светлый! ПроверилJack FamousПридумал вариант сStart! = Timer
i As Long,Так вот, при
слэн вдруг появилось?1/Число вхожденийимя продавца (в игнорировать числовые значенияи нажать клавиши численность, и по
вывод на листKoGG
y Then x). Всё то же ваш вариант на
: alex1210, здравствуйте! доп.столбцом, однако способ
On Error Resume str As String обработке массива из: а не надоУникальных значений раньшедля каждого элемента
файле примера для нужно записать формулу =СУММПРОИЗВ(ЕТЕКСТ(A7:A15)/СЧЁТЕСЛИ(A7:A15;A7:A15)) Ctrl+Shift+Enter. всей колонке проставить
итогов работы функции., да по идеии = y -
самое, только прежде своих данных, ноНу, как я будет неудобен при NextStart! = Timer 10 000 цифр этой «элегантности» :)
было 48, а и все они удобства сделан выпадающийЕсли в список постоянноПопробуйте, у вас
1. В сводной
Hugo121 нужно сразу адресовать Диапазон.Row + 1
создать массив констант увы работает приблизительно понял, это уникальный большом количества сетей,
Set D =
aOld = [a1:a12000] от 0 дов vba эффективнее
теперь вдруг получилось суммируются, что и список), формула пересчитает добавляются значения, то все получится . таблице добавить поле: Если не работать на аналогичную строку Set Диапазон = в именованных диапазонах на 70 %числовой тогда придется для CreateObject(«Scripting.Dictionary»)str = «» 100 на моём будет простым перебором,
47. даст нам количество количество уникальных.
можно создать ДинамическийBati4eli колонки численность и с ячейками - в проверяемом диапазоне.
Range(Диапазон.Cells(1), Диапазон.Rows(x).Cells(1)) Set
=СУММПРОИЗВ(—(ЧАСТОТА(A1:KN1;массив_-1)>0))
медленнее. Есть еще
идентификатор конкретной точки
каждого создавать доп.столбцы
MyArray = [a1:a12000]
For i =
не шустром рабочем только к вашемуДа и мой
уникальных элементов:
Аналогичным образом можно решить
именованный диапазон Исходный_список.
: она будет суммироваться.
будет ещё разSet RC = Диапазон_условия = Диапазон.Offset(0,Я пробовал, увеличил варианты? (как её адрес,
Заранее благодарю!
For Each a 1 To UBound(aOld) компе получилось следующее:
алгоритму еще добавить макрос говорит, чтоЕсли в диапазоне встречаются
задачу с двумя=СУММПРОИЗВ((Исходный_список<>»»)/СЧЁТЕСЛИ(Исходный_список;Исходный_список))
Aksima
KoGG так в 40
Диапазон.Rows(IC.Row).CellsЕдинственный вопрос: почему Диапазон_условия.Column — Диапазон.Column)
Ваш файл доPelena
например, только в
Dmitriy XM
In MyArray
If InStr(1, str,1. Мой макрос
считываение диапазона в
их всё-таки 48… пустые ячейки, то
условиями.
Теперь при добавлении новых,
: А вот тестовый
быстрее…
у меня не ReDim USL(1 To 100тыс. строк эта: Вариант
виде числа):
D.Add CStr(a), a
aOld(i, 1)) = с прямым считыванием
массив..kim
придется немного усовершенствовать=СУММПРОИЗВ(((A14:A23=A8)*(B14:B23=B8))/СЧЁТЕСЛИМН(A14:A23;A14:A23;B14:B23;B14:B23;C14:C23;C14:C23))
значений они будут
честно говоря я
пример, где работаютВообще удивляюсь -
выводится 1) For Each
формула работала в=СУММПРОИЗВ(1/СЧЁТЕСЛИ(A1:KN1;A1:KN1))
Sanja
=СЧЁТЕСЛИМН(D2:D16;»Магнит»;E2:E16;»>»&0)
Next a
0 Then str значений из диапазона
а в этой
: Алексей, поищите огрехи формулу, добавив проверку
В этом случае будут
учитываться формулой. всю жизнь думал,
три метода.
как вы все
массив на листе IC In Диапазон_условия 4 раза быстрееMCH
: Так это уОлег55
NewMyArray = D.Items = str &
и добавлением в элегантной формуле перебор
в макросе :) на пустые ячейки
подсчитаны уникальные товары
Примечание что массивы строчные
Тестовая процедура bb так виртуально коды
, когда я использую icv = IC.Value
Вашей исходной
: вопрос, все числа
автора спросите: Дмитрий, благодарю, что
For i =
aOld(i, 1) & коллекцию
происходит не одинДело в том,
(иначе получим ошибку
только в строках,: Уникальные значения в файле примера выделены
(т.е. одномерный массив
Результаты:
разбираете…
метод в функции If LCase(icv) =
Michael_S целые и не
ЦитатаОлег55 написал: …количество
не остались равнодушны 0 To UBound(NewMyArray)
«|»СЧЁТ_РАЗНЫХ_1 — 0,44
раз, а по что в таком
деления на 0
для которых Продавец
с помощью Условного форматирования (см.
представлен в видеИсправленный оригинал -
Судя по описанию «МАССИВ_УНИ» ?
LCase(Условие) Then For: Да, я тоже
более 52?
уникальных значений по к проблеме! Однако
Cells(i + 1,Next i сек. количеству элементов - виде, формула интерпретирует в дроби): и Месяц совпадают
статью Выделение уникальных значений одной колонки из СВОД_УСЛ время 0,06 — на 6000KoGG Each RC In проверял. На маленькихесли да, то столбцу ИД…это и Ваш вариант считает 2) = NewMyArray(i)
aNew = Split(str,2. Мой доработанный для каждого из пусто как еще
Вот и все дела. с критериями, установленными в MS EXCEL). множества строк). сек
строк на словаре/массиве: Если диапазон «Диапазон» Диапазон rcv = массивах UDF проигрывает,
можно еще такой есть диапазон B2:B16 количество накладных сети
Next «|») ‘ последнее макрос с предварительным элементов массива происходит одно уникальное, вотkarl311 в желтых ячейках.Часто вместо формулы =СУММПРОИЗВ((A7:A15<>»»)/СЧЁТЕСЛИ(A7:A15;A7:A15)) используютА как представить массив,
Мой вариант с отработает за доли из одной колонки,
RC.Value If rcv на больших -
вариант:Олег55 Магнит с бонусомCells(5, 5) =
значение пустое копированием из диапазона
planetaexcel.ru
Подсчет уникальных значений в столбце по двум условиям
перебор всех «остальных мы его и: Здравствуйте.
В файле примера на более простую формулу чтобы он распределялся массивами — СВОД_УСЛ2 секунды. Но без то <> «» And в зависимости от
=СУММПРОИЗВ(—(СЧЁТЕСЛИ(A1:KN1;СТРОКА($1:$53)-1)>0)): От души большое больше нуля, а Timer — StartFor i = в массив и
элементов», сравнение с
отнимаем. Для болееНужна небольшая Ваша листе Два критерия
=СУММПРОИЗВ(1/СЧЁТЕСЛИ(A7:A15;A7:A15)). Разница между по строкам, а время 0,02 сек файла делать…Set RC = rcv <> 0 количества уникальных.или на базе спасибо! оба варианта мне нужно вычислитьCells(5, 6) = 0 To UBound(aNew) добавлением в коллекцию условием и увеличение простого визуального восприятия помощь. Уже не приведено решение этой
формулами состоит в не столбцам вВариант Казанского СЧЕТ_УСЛBati4eli Диапазон.Rows(IC.Row).Cells(1)Да и RC Then If RC.Row
Вот так должна Вашей формулы: великолепные — и
количество точек, т.е. UBound(NewMyArray) + 1 — 1 уже из этого индекса, если условие уменьшил проверяемый диапазон. первый день ломаю задачи с помощью том, что вторая экселе? время 0,11 сек.: вовсе не нужна. = IC.Row Then раза в триКод=СУММПРОИЗВ(—(ЧАСТОТА(A1:KN1;СТРОКА($1:$53)-1)>0)) Сергея, и количество уникальных значений[CalcTime] = TimerCells(i + 1, массива выполнено.слэн голову над этой Сводной таблицы. В формула учитыват значенияКазанскийПри вызове множестваHugo121rcv = Диапазон.Rows(IC.Row).Cells(1).Value SHT = True быстрее бытьДолжно считать немногоОчень помогли! по столбцу ИД — Start 2) = aNew(i)СЧЁТ_РАЗНЫХ_2 — 0,094я уж не: да, но если задачкой. Нужно подсчитать этом случае выводится Пустой текст («»),, функций из сводной, Как можно неА загнав данные For x =Function Уникальные&(Диапазон As Range) быстрее, чем формулаJack Famous точки для сетиEnd Sub
Next сек. говорю о последующем пустых ячеек все
количество уникальных значений не количество уникальных, а первая ихК сожалению ваш таблицы время будет работать с ячейками?
в массивы будет 1 To UBound(USL)
Dim Ar(), D от Елены из: Олег55, доброго дня! Магнит и бонусаSub filter()Cells(2, 5) =3. Макрос, реализующий
делении и опять же нет? :) в массиве и
а список уникальных игнорирует. вариант, не совсем другое, если заново
Посмотрите, пожалуйста, пример. еще быстрее. If USL(x) = As Object, i сообщения выше
Предлагаю вариант на
больше нуля. ВStart! = Timer
Timer — Start на VBA функцию суммировании..Alex_ST частоту их появления, товаров.
Приведем пример, когда это верно считает. Он формируется сводная таблица,Bati4eliКликните здесь для
rcv Then SHTSet D =UPD: связях таблиц между данном примере таковыхRange(«A1:A12000»).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Worksheets(1).Range(«B1»),Cells(2, 6) = листа =СУММПРОИЗВ(1/СЧЁТЕСЛИ(Диапазон;Диапазон))Михаил С.
: Макрос считает правильно. т.е. значение «7»
Теперь рассмотрим другую таблицу бывает важно.
видимо подсчитывает кол-во то возможно пересчитываться
:
просмотра всего текста = False End CreateObject(«Scripting.Dictionary»)Проверил на большом собой. Использованы только будет пять. Unique:=True UBound(aNew) + 1СЧЁТ_РАЗНЫХ_3 — 38,22: ну может вы Проверялось не раз
planetaexcel.ru
Подсчет уникальных значений самый быстрый способ (Формулы/Formulas)
столько то раз, (столбцы А:С на
Пусть дана таблица продаж платежей по выбранной будет каждая изKoGG Public Function СВОД_УСЛ(Диапазон If Next IfAr = Диапазон.Value количестве данных, формула штатные функции Excel.По одной точке[CalcTime] = Timer[CalcTime] = Timer сек.
и правы;
(в том числе значение «12» столько рисунке ниже). товаров (см. рисунок профессии, а функция
282 введенных, тут, As Range, Условие
SHT Then USL(UBound(USL))For Each i с ЧАСТОТА существенно Результат на листе может быть несколько
— Start — Start
Да… Гуру форума,
=СУММПРОИЗВ(1/СЧЁТЕСЛИ(A4:P16;A4:P16&""))-ИЛИ(A4:P16="")
даже и ручным то раз иНеобходимо вывести количество заключенных
ниже, столбцы А должна высчитывать кол-во функция массива Казанскогопопробовал использовать массив.. As Variant, _ = rcv ReDim In Ar быстрее СЧЁТЕСЛИ
«shop» 3ий столбец накладных, причем как
Cells(6, 5) =
End Sub конечно, обычно правы,тоже массив пересчётом).
т.д. договоров в каждом и В). С
уникальных табелей по
с сумме будет и почему то,
Диапазон_условия As Range,
Preserve USL(1 ToIf Not D.exists(i)djon2012alex1210
с бонусом, так
Timer — StartSub btnCollections1_Click() но чтобы разницаAlex_ST
А вот усовершенствованнаяЗаранее благодарен. месяце. помощью формулы =ЕСЛИ(МЕСЯЦ(B26)=1;A26;»») определенной профессии. быстрее. функция стала работать metod As MTD) UBound(USL) + 1) Then D(i) =: Спасибо вам большое: ,Sanja,я конечно ниче и без негоEnd SubDim NewMyArray(), MyArray во времени выполнения: Не понял, зачем? вами формула дажеkimТ.к. в таблице ведется
определяются товары, которыеКазанскийИспользование процедуры с в разы дольше, Dim i&, j&
End If End 1 Pelena и MCH
не понял, ну
(т.е. ноль)Файл не даю,
Dim Col As достигала более 400
Быстрее работать что
в исходном примере: Для этого нужна
учет счетов сразу
были проданы в
: Можете попробовать так:
заполнением было бы
чем вариант работы Dim Dia_Usl As If End IfNext
за формулы. Я штучка прикольная. этоСергей сильно секретный :) New Collection раз…!!! Не ожидал. ли будет если топик-стартера (т.е. без функция СЧЁТЕСЛИ()- масса для всех договоров январе. Если товарFunction MyFunc() As оптимальнее. с ячейками . Variant Dim Dia Next End IfУникальные = D.Count проверил их на наверное аналог счётеслимн?
: доп столбец одинКазанскийStart! = TimerТак что, формулисты, я сначала скопирую пустых ячеек в примеров на форуме. и по каждому продан не в Variant MyFunc =А еще оптимальнее
Посмотрите, пожалуйста, пример
As Variant Dim Next ReDim PreserveEnd Function скорость выполнения, результатыSanja для всех сетей
: У меня вводOn Error Resume бросайте своё тормозное диапазон во временный диапазоне) даёт 47,Для подсчета уникальных: договору может быть
январе, то формула Application.Transpose(Array(«Arg1», «Arg2», «Arg3»)) — смотри выше.
из предыдущего сообщения.
x As Long USL(1 To UBound(USL)
djon2012 оказались таковы: формула
: Можно и так
Sanja формулы в ячейку
Next занятие и пишите массив, а потом
когда реально и
=СУММПРОИЗВ(1/СЧЁТЕСЛИ(A4:P16;A4:P16))
выставлено несколько счетов,
возвращает значение Пустой End FunctionС уважением,
KoGG (Там используется старая Dim y As — 1) Select: Здравствуйте! от Pelena в сказать. Название говорит: UDF (пользовательская функция) листа 14,5 с,MyArray = [a1:a12000] макросы и UDF!!! буду брать по моим макросом иHugo то номера договоров текст. Пользователь решает Aksima: Офис 2007, Windows
функция)
excelworld.ru
Количество уникальных значений по условию
Long Dim USL() Case metod Case
Спасибо за Ваши19! раз медленнее само за себя Function СЧЕТУНИКЕСЛИМН(rngU As «СЧЁТ_РАЗНЫХ_3» 28,9 с.For Each aКазанский одному элементу массива вашей же исходной: СЧЁТЕСЛИ могут повторяться. подсчитать количество уникальныхBati4eli
8, процессор Intel(R)Казанский As Variant Dim КОЛИЧЕСТВО_УНИ СВОД_УСЛ = варианты Michael_S и
формулы из моего СЧЕТ Range, ParamArray Conditions()) Ровно в 2 In MyArray: Интересно! А функция и пытаться добавить формулой там 48Alex_STСоздадим дополнительный столбец для товаров в январе: Вот для чего Core(TM) i7 CPU: Лучше создать функцию, SHT As Boolean UBound(USL) Case МАССИВ_УНИ pabchek, я проверил примера, формула отУНИК As Long ‘rngU раза. Интересно, почему?Col.Add a, CStr(a) листа как таковая? его в коллекцию уникальных значений…: kim, определения месяца заключения (их всего 3: транспонирование в экселе 930 @ 2.8 которая вводится в Application.Volatile x = СВОД_УСЛ = USL() их на своих MCH (вариант СЧЕТЕСЛИ)ЕСЛИМН. В отличии от — диапазон поискаслэнNext aSerge (метод проверки уникальностиAlex_ST=СУММПРОИЗВ(1/СЧЁТЕСЛИ(A4:P16;A4:P16))- это здОрово! договора (см. статью Товар1, Товар2 и нужно =) GHz, Оперативка 4 столбец как формула Диапазон.row + Диапазон.Rows.Count End Select End данных. Результаты следующие: в обычное СЧЕТЕСЛИМН подсчитывает уникальных значений, обязательный: не помню с’Если работа с: Ага, а потом по Уокенбаху)?: К стати, знатокиЭлементарно просто и Название месяца прописью Товар3). Спасибо, большое! Гб. массива и возвращает — 1 y Function
Ваша пользовательская функция4 раза медленнее количество УНИКАЛЬНЫХ значений ‘Conditions() — массив кем мы оттачивали коллекцией далее неприемлема, выясняется что расчётныйЯ, к стати,
VBA, помогите, плиз… элегантно.
в MS EXCEL).
Формула =СУММПРОИЗВ((A7:A15<>»»)/СЧЁТЕСЛИ(A7:A15;A7:A15)) вернет правильный результат 3,На примере, которыйBati4eli
массив. = Диапазон.Parent.UsedRange.Rows.Count If
SlavaRus Michael_S в сравнении, формула от MCH
alex1210
ПАР значений вида: скорость этого алгоритма то перебросить её
файл не работал искал где-нибудь данныеЧто-то у меняНе встречал такого
Выведем из этого а формула =СУММПРОИЗВ(1/СЧЁТЕСЛИ(A7:A15;A7:A15)) вернет 4, Вы привели в: К сожалению вПри этом в x > y: Расширенный фильтр не с изложенной 4 (вариант ЧАСТОТА) в: ААААААААААААААААААА, круто Диапазон_Условий1;Условие1;Диапазон_Условий2;Условие2…Диапазон_УсловийN;УсловиеN, обязательный ‘ — точно с в массив у начальника на о скорости выполнения не получается сделать раньше, поэтому написАл столбца только уникальные т.к. в «пустых» сообщении #8, моя том то и функции достаточно один Then x = подойдет? Поставить пустое
постами выше по2,1 раза быстрееAkropochev должен иметь хотя-бы ZVI, а вот’ReDim NewMyArray(1 To
деловой презентации потому операций с коллекциями, на основе этой UDF: месяцы (см. статью
ячейках функция дает точно дело, что одной раз пройти по y — Диапазон.row условие и галку скорости осталась почти. Да действительно формула
: Олег55, добрый день одну пару значений. еще учавствовал или Col.Count)
что макросы отключены но не нашел… классной формулы UDF
Function СЧЁТ_РАЗНЫХ(Диапазон As
Отбор уникальных значенийС31:С34 такой же результат,
сводной здесь не массивам + 1 Dia на уникальных значениях. такой же, если с ЧАСТОТА значительноМой вариант немассивной ‘Все диапазоны должны degassad или Anik..i = 1 были. Что-то мне подсказывает, (ну, чтобы потом Range) As Long (убираем повторы изна самом деле как ваша функция решишь задачу, такДиапазон, Диапазон_условия = Range(Диапазон.Cells(1), Диапазон.Rows(x).Cells(1)) Потом посчитать видимые точнее то приблизительно быстрее формулы СЧЕТЕСЛИ. формулы состоять из одного но там былоFor Each aИ стоя на что она не формулы писАть было’————————————————————————————— списка) в MS содержатся 4 значения — я выводил как таким методоми посчитать уникальные, Dia_Usl = Диапазон.Offset(0, строки, если фильтроватьна 5% быстрееЕще раз СПАСИБО=СУММПРОИЗВ(—(ПОИСКПОЗ(B2:B16*(D2:D16=L2)*(E2:E16>0);B2:B16*(D2:D16=L2)*(E2:E16>0);0)=(СТРОКА(B2:B16)-СТРОКА(B2)+1)*(D2:D16=L2)*(E2:E16>0))) столбца и иметь чуточку точнее в In Col бирже труда макрописец слишком велика (ну, проще и не’ Procedure : EXCEL) и поместим «», которые воспринимаются в другой столбец мы получим не а потом сформировать Диапазон_условия.Column — Диапазон.Column) на месте., Ваша pabchek по за вашу помощь!!!Олег55 равное кол-во строк
конце
’ NewMyArray(i) = упрямо повторяет себе:
по крайней мере указывать два раза СЧЁТ_РАЗНЫХ их в столбец ей как некое
и сравнивал. кол-во уникальных людей выходной массив. ReDim USL(1 Tomcherry скорости такая же И шо я: , , большое Dim cl() DimAlex_ST a
«А у меня не выше, чем диапазон)’ Author : F. текстовое значение, хотя
Покажите на конкретных по одной профессии,Использовал словарь коллекций 1) For i
: можно так: как формула от бы без вас спасибо, что не arrFlag() As Boolean: По совету слэн’a
Cells(i, 2) = считает-то всё-равно быстрее»… обращение к ячейкеДаже без игнорирования’ Topic_HEADER :
И, наконец, помощью формулы =СУММПРОИЗВ(($D$9:$D$26=F9)/СЧЁТЕСЛИ($A$9:$A$26;$A$9:$A$26))
и нулевой длины. данных, что неверно. а все платежи Public Function СЧЕТ_УСЛ(Диапазон
= 1 To=ЕСЛИ(И(СЧЁТЕСЛИ(B:B;B2)=1;C2=$C$1);1;0) MCH с функцией делал??? остались в стороне Dim I&, J&
попробовал ещё подсократить aБрр. диапазона). Поэтому, наверное,
пустых ячеек… Функция СЧЁТ_РАЗНЫХ (UDF) подсчитаем количество уникальныхСОВЕТКазанский совершенные по этой
As Range, Условие UBound(Dia_Usl, 1) IfB:B — столбец ЧАСТОТА.Michael_S от моей проблемы! Dim rngCond() On время выполнения СЧЁТ_РАЗНЫХ_2.
i = i + 1слэн выигрыш в скоростиПытаюсь сделать так:’ Topic_URL : договоров в соответствующем: Как подсчитать уникальные, профессии. As Range, Диапазон_условия LCase(Dia_Usl(i, 1)) = в котором значениеСпасибо!!!: а если так Разобрал принципы работы Error Resume NextПопытался сначала заменитьNext: и еще можно при использовании массиваFunction СЧЁТ_РАЗНЫХ_2(Диапазон As’ Post_Author : месяце. числовые значения показанонаверно я неЧестно говоря извеняюсь As Range) As LCase(Условие) Then If должно быть уникальнымBati4eli попробовать: ваших вариантов, принял cl = rngU.Value в цикле вCells(3, 5) = немножко причесать.. :) вместо прямого обращения Range) As Long Alex_ST & The_PristРешение также возможно с в одноименной статье
выспался и плюс за то, что Variant() Dim q(), Dia(i, 1) <>B2 — проверяемое: Привет, всем!Function Уникальные&(Диапазон As Range) к сведению, буду With CreateObject(«Scripting.Dictionary») For ключе коллекции CStr(tmpArr(i, Timer — Startнапример, зачем в к ячейкам будет
’=СУММПРОИЗВ(1/СЧЁТЕСЛИ(Диапазон;Диапазон)) & Лузер™ помощью Сводной таблицы. Подсчет уникальных числовых
никогда не пользовался
поднял такую панику
w(), x, i& «» And Dia(i, значение
Столкнулся со следующейDim Ar(), D теперь пользоваться наиболее
I = 1 j)) на tmpArr(i,
Cells(3, 6) = коллекцию передавать значение, незначительным…With Application.WorksheetFunction’ Post_URL :Есть диапазон с данными, значений. коллекциями, поэтому не Я думал, что q = Intersect(Диапазон, 1) <> 0
C — столбец проблемой: требуется подсчитать As Object, i
удобным в зависимости To UBound(cl) ReDim
j): Col.Count если нужно толькослэнСЧЁТ_РАЗНЫХ_2 = .SumProduct(1’ DateTime : в котором некоторые
СОВЕТ совсем врубаюсь в этот файл придется Диапазон.Worksheet.UsedRange).Value w = Then SHT = «соседний, в котором кол-во уникальных значенийSet D = от ситуации arrFlag(Int(UBound(Conditions) / 2))If tmpArr(i, j)[CalcTime] = Timer посчитать?
: гораздо быстрее / .CountIf(Диапазон, Диапазон)) 06.04.10, 12:00 значения повторяются больше: Как подсчитать уникальные принцип работы вашей перекидывать по предприятию Intersect(Диапазон_условия, Диапазон_условия.Worksheet.UsedRange).Value On True For x должно выполняться условие» в одном столбце, CreateObject(«Scripting.Dictionary»)
djon2012 For J = <> «» Then
— Startпередавайте только ключКазанскийEnd With’ Purpose :
одного раза:
числовые значения с
функции. (а вы знаете, Error Resume Next = 1 To$C$1 — условие если в соседнемAr = Диапазон.Value: Здравствуйте!
LBound(Conditions) To UBound(Conditions)
.Add tmpArr(i, j),End Subслэн: Алексей, а протестируйEnd Function
возвращает число уникальныхЗадача — подсчитать количество дополнительными условиями (критериями)При выводе результата что макросы включены With New Scripting.Dictionary UBound(USL) If USL(x)протянуть формулу на столбце значение удовлетворяетFor Each i
В моем примере Step 2 If
tmpArr(i, j)Sub btnCollections2_Click(): или пересчет был разные методы и
выдаёт #ЗНАЧ! значений в указанном уникальных (неповторяющихся) значений показано в статье Подсчет у меня везде не у всех ‘ ===== Tools = Dia(i, 1) весь столбец и определенному требованию. Желательно In Ar в столбце KO
IsObject(Conditions(J)) Then rngCondзаработало. Время уменьшилось
Dim NewMyArray(), MyArray отключен :) отпишись?Михаил С. диапазоне в диапазоне. В Уникальных ЧИСЛОвых значений получается и ошибка типа
— References - Then SHT =
посчитать получившуюся сумму…. решить задачу стандартнымиD(i) = 1 формулами вычисляется количество = Conditions(J).Value If
почти вдвое :Dim Col AsSergeДля тестов создай
: массив
’ Notes : приведенном выше примере, в MS EXCEL.152 #ИМЯ введет в Microsoft Scripting Runtime False End IfKoGG средствами эксель (так
Next уникальных значений по IsNumeric(rngCond(I, 1)) Then стало 0,047 сек.
New Collection: Не согласен. Для массив из миллиона=СУММ(1/(ЕСЛИ(СЧЁТЕСЛИ(A4:P16;A4:P16);СЧЁТЕСЛИ(A4:P16;A4:P16);1)))-СЧЁТЕСЛИ(A4:P16;»»)’————————————————————————————— как легко заметить,Подсчитаем Уникальные значения с
. ступор непродвинутых людей). ===== .CompareMode = Next If SHT: Замени с 23
CyberForum.ru
как оно может
Как посчитать количество уникальных значений в Excel?
Подсчет уникальных значений в Экселе (Excel).
Как в Excel можно посчитать количество уникальных значений в столбце или определенном диапазоне?
Под уникальными значениямм понимаем те, которые встречаются в диапазоне только один раз.
Допустим значения содержатся в диапазоне С2:С9
Водим диапазон E2:E9 в ячейках которого содержится количество повторов каждого значения в диапазоне С2:С9
Формула количества повторов для значения C2 =СЧЁТЕСЛИ($C$2:$C$9;C2)
Эта формула растягивается на весь диапазон
Количество уникальных значений определится по формуле =СУММЕСЛИ(E2:E9;»=1″)
Чтобы увидеть уникальные элементы нужно наложить фильтр на столбец E
Если возникла задача посчитать количество уникальных значений в Экселе (Excel), то её можно решить несколькими способами — с формулами и без формул.
1) В том случае, если диапазон данных (числовых или текстовых) является статичным и меняться не будет, то можно воспользоваться командой «Удалить дубликаты».
Для этого выделяем диапазон (в нашем примере — это B1:B14) и на панели инструментов Excel выбираем «Данные» -> «Удалить дубликаты».
Появится окно, в котором указываются столбец / диапазон, из которых удаляются дубликаты.
Нужно, чтобы обязательно стояла галочка «Мои данные содержат заголовки» — иначе заголовок тоже будет учитываться при отборе уникальных значений.
Теперь нажимаем на кнопку «ОК».
В результате Эксель выведет сообщение о том, сколько найдено дубликатов и сколько осталось уникальных значений.
Таким образом, количество уникальных значений в выбранном диапазоне будет равно 10.
2) Для определения количества уникальных значений в Excel можно использовать специальную формулу, состоящую из 2 функций:
Функция СЧЁТЕСЛИ будет использоваться для того, чтобы посчитать, сколько раз встречается то или иное значение в диапазоне.
Далее с помощью функции СУММ суммируются дроби вида:
1 / Число вхождений каждого элемента.
Для нашего примера формула будет выглядеть так:
При этом вводить её нужно как формулу массива — через комбинацию Ctrl + Shift + Enter.
В результате получится всё те же 10 уникальных значений.
А вот примеры работы этой формулы, если в таблице Excel имеются текстовые данные:
Подсчет уникальных значений в Excel
Здравствуйте. Сегодня у нас практикум, считаем количество уникальных значений в столбце Excel. Задача звучит проще, чем выполняется, поэтому, рассматриваем всевозможные ситуации и способы их решения.
Количество уникальных значений в списке
Если вы уверены, что в массиве с данными нет пустых ячеек, счет уникальных значений excel делаем так:
Если применить такую формулу для массива с пустыми значениями, она вернет ошибку #ДЕЛ/0. Как это обойти – читайте дальше.
Считаем данные в массиве с пустыми ячейками
Давайте посчитаем количество уникальных значений Excel, когда в исходной выборке есть пустые клетки. Для этого сделаем лишь одну небольшую правку в формуле:
Легко заметить, что результат получился на 1 больше, чем в прошлом примере. Это потому, что формула посчитала и пустую ячейку, как уникальные данные. Чтобы этого не было, еще доработаем функцию:
Теперь получили правильный результат без учёта пустот.
Следующие две формулы выглядят сложнее, но работают быстрее. Используйте их, если программа подвисает при выполнении.
Подсчет уникальных числовых данных
Чтобы в Excel посчитать количество уникальных значений в столбце с числами, используем функцию ЧАСТОТА :
Количество уникальных строк с текстом
Похожая «скоростная» но для счёта текстовых строк:
=СУММПРОИЗВ(—(ЧАСТОТА(ПОИСКПОЗ(диапазон; диапазон;0);СТРОКА(диапазон)-СТРОКА(диапазон.первая ячейка)+1)>0))
Такая формула не подходит, когда в массиве есть пустые клетки. Если это критично, можно еще усложнить:
=СУММ(ЕСЛИ(ЧАСТОТА(ЕСЛИ(диапазон<>»»;ПОИСКПОЗ(диапазон; диапазон;0));СТРОКА(диапазон)-СТРОКА(диапазон.первая ячейка)+1);1))
Это формула массива, после ввода нажимайте не Enter , а Ctrl+Shift+Enter . Иначе работать не будет.
Выглядит монструозно, а результат верный. Можно пользоваться!
Пересчёт числовых значений с условием
Вы можете узнать, сколько значений в массиве, удовлетворяющих какому-то условию. Например, у меня есть таблица продаж, где указаны коды товара и продавцы, которые продавали. Меня интересует, сколько оригинальных позиций продавал менеджер Немятый.
Формула получилась такая:
Это формула массива, подтверждаем ввод комбинацией Ctrl+Shift+Enter !
Счёт текстовых строк по условию
Похожее задание, но теперь нужно считать, сколько менеджеров продавали товар с кодом 1001.
А формула такая:
=СУММ(—(ЧАСТОТА(ЕСЛИ(диапазон<>»»;ЕСЛИ(условие;ПОИСКПОЗ(диапазон; диапазон;0)));СТРОКА(диапазон)-СТРОКА(диапазон.первая ячейка)+1)>0))
Вот так можно организовать подсчет одинаковых значений в столбце Excel в самых распространенных случаях. Формулы универсальные, скопируйте их, вставьте свои данные и получите результат.
Это всё на сегодня, Задавайте ваши вопросы в комментариях. Понравилась статья – поделись с другом!
Подсчет Уникальных ТЕКСТовых значений в MS EXCEL
Произведем подсчет уникальных текстовых значений в диапазоне ячеек.
Сначала поясним, что значит подсчет уникальных значений. Пусть имеется массив текстовых значений <«а»,»b»,«а»,»а»,»а»>. При подсчете уникальных игнорируются все повторы, т.е. значения выделенные жирным. Соответственно, подсчитываются остальные значения, т.е. «а» и «b». Ответ очевиден: количество уникальных значений равно 2.
Произведем подсчет числа уникальных текстовых значений в диапазоне A7:A15 (см. файл примера ). Диапазон может содержать пустые ячейки.
Решение
Запишем формулу =СУММПРОИЗВ(( A7:A15<>«» )/СЧЁТЕСЛИ(A7:A15;A7:A15))
Если в диапазоне кроме текстовых значений содержатся также и числа, то формула подсчитает и их. Чтобы игнорировать числовые значения нужно записать формулу =СУММПРОИЗВ(ЕТЕКСТ( A7:A15 )/СЧЁТЕСЛИ(A7:A15;A7:A15))
Если в список постоянно добавляются значения, то можно создать Динамический именованный диапазон Исходный_список.
Теперь при добавлении новых значений они будут учитываться формулой.
Примечание: Уникальные значения в файле примера выделены с помощью Условного форматирования (см. статью Выделение уникальных значений в MS EXCEL).
Часто вместо формулы =СУММПРОИЗВ(( A7:A15<>«» )/СЧЁТЕСЛИ(A7:A15;A7:A15)) используют более простую формулу =СУММПРОИЗВ(1 /СЧЁТЕСЛИ(A7:A15;A7:A15)) . Разница между формулами состоит в том, что вторая формула учитыват значения Пустой текст («»), а первая их игнорирует.
Приведем пример, когда это бывает важно.
Пусть дана таблица продаж товаров (см. рисунок ниже, столбцы А и В). С помощью формулы =ЕСЛИ(МЕСЯЦ(B26)=1;A26;»») определяются товары, которые были проданы в январе. Если товар продан не в январе, то формула возвращает значение Пустой текст. Пользователь решает подсчитать количество уникальных товаров в январе (их всего 3: Товар1, Товар2 и Товар3).
Формула =СУММПРОИЗВ(( A7:A15<>«» )/СЧЁТЕСЛИ(A7:A15;A7:A15)) вернет правильный результат 3, а формула =СУММПРОИЗВ(1 /СЧЁТЕСЛИ(A7:A15;A7:A15)) вернет 4, т.к. в «пустых» ячейках С31:С34 на самом деле содержатся 4 значения «», которые воспринимаются ей как некое текстовое значение, хотя и нулевой длины.
СОВЕТ: Как подсчитать уникальные числовые значения показано в одноименной статье Подсчет уникальных числовых значений.
СОВЕТ: Как подсчитать уникальные числовые значения с дополнительными условиями (критериями) показано в статье Подсчет Уникальных ЧИСЛОвых значений в MS EXCEL.
Подсчет количества уникальных значений среди повторяющихся
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
Допустим, вам нужно узнать, сколько уникальных значений есть в диапазоне, содержащем повторяющиеся значения. Например, если столбец включает в себя следующее:
Значения 5, 6, 7 и 6 выводятся в виде трех уникальных значений: 5, 6 и 7.
Значения «Кирилл», «Сергей», «Сергей», «Сергей», результат — это два уникальных значения — «Кирилл» и «Сергей».
Существует несколько способов подсчета уникальных значений среди повторяющихся.
С помощью диалогового окна » Расширенный фильтр » можно извлекать уникальные значения из столбца данных и вставлять их в новое место. Затем с помощью функции ЧСТРОК можно подсчитать количество элементов в новом диапазоне.
Выделите диапазон ячеек или убедитесь в том, что активная ячейка находится в таблице.
Убедитесь, что диапазон ячеек содержит заголовок столбца.
На вкладке Данные в группе Сортировка и фильтр нажмите кнопку Дополнительно.
Откроется диалоговое окно » Расширенный фильтр «.
Выберите команду скопировать в другое место.
В поле Копировать в введите ссылку на ячейку.
Вы также можете нажать кнопку Свернуть диалоговОе окно , чтобы временно скрыть диалоговое окно, выделить ячейку на листе и нажать кнопку Развернуть диалоговое окно .
Установите флажок только уникальные записи и нажмите кнопку ОК.
Уникальные значения из выделенного диапазона копируются в новое место, начиная с ячейки, указанной в поле Копировать в .
В пустой ячейке, расположенной под последней ячейкой диапазона, введите функцию строки . Используйте диапазон уникальных значений, которые вы только что скопировали в качестве аргумента, исключая заголовки столбцов. Например, если диапазон уникальных значений — B2: B45, вы вводите = Rows (B2: B45).
Для выполнения этой задачи используйте сочетание функций Если, сумм, Частота, ПОИСКПОЗи ДЛСТР .
Назначьте значение 1 каждому из истинных условий с помощью функции ЕСЛИ.
Добавьте итог с помощью функции сумм .
ПодСчитайте число уникальных значений с помощью функции Частота . Функция FREQUENCY не обрабатывает текстовые и нулевые значения. Для первого вхождения определенного значения эта функция возвращает число, равное количеству вхождений этого значения. Для каждого вхождения того же значения, которое находится после первой, эта функция возвращает нуль.
Возвращает расположение текстового значения в диапазоне с помощью функции ПОИСКПОЗ . Возвращаемое значение затем используется в качестве аргумента функции FREQUENCY , чтобы можно было оценивать соответствующие текстовые значения.
Поиск пустых ячеек с помощью функции Len . Длина пустых ячеек равна 0.
Формулы, приведенные в этом примере, должны быть введены как формулы массива. Если у вас установлена текущая версия Office 365, можно просто ввести формулу в верхней левой ячейке диапазона вывода и нажать клавишу ВВОД, чтобы подтвердить использование формулы динамического массива. Иначе формулу необходимо вводить с использованием прежней версии массива, выбрав диапазон вывода, введя формулу в левой верхней ячейке диапазона и нажав клавиши CTRL+SHIFT+ВВОД для подтверждения. Excel автоматически вставляет фигурные скобки в начале и конце формулы. Дополнительные сведения о формулах массива см. в статье Использование формул массива: рекомендации и примеры.
Чтобы просмотреть Пошаговое вычисление функции, выделите ячейку с формулой, а затем на вкладке формулы в группе Зависимости формул нажмите кнопку Вычисление формулы.
Функция Частота Вычисляет частоту возникновения значений в диапазоне значений и возвращает вертикальный массив чисел. Например, используйте функцию Частота для подсчета количества результатов теста, которые попадают в диапазоны оценок. Так как эта функция возвращает массив, она должна быть введена как формула массива.
Функция ПОИСКПОЗ осуществляет поиск определенного элемента в диапазоне ячеек и возвращает относительное расположение этого элемента в диапазоне. Например, если в диапазоне a1: A3 содержатся значения 5, 25 и 38, функция формула = Match (25; a1: A3; 0) возвращает число 2, так как значение 25 является вторым элементом диапазона.
Функция ДЛСТР возвращает число символов в текстовой строке.
Функция СУММ вычисляет сумму всех чисел, указанных в качестве аргументов. Каждый аргумент может быть диапазоном, ссылкой на ячейку, массивом, константой, формулой или результатом другой функции. Например, функция сумм (a1: A5) складывает все числа, содержащиеся в ячейкАх от a1 до A5.
Функция Если возвращает одно значение, если указанное условие имеет значение true, и другое, если условие имеет значение false.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.
Подсчет количества уникальных значений
Постановка задачи
Есть диапазон с данными, в котором некоторые значения повторяются больше одного раза:
Задача — подсчитать количество уникальных (неповторяющихся) значений в диапазоне. В приведенном выше примере, как легко заметить, на самом деле упоминаются всего четыре варианта.
Рассмотрим несколько способов ее решения.
Способ 1. Если нет пустых ячеек
Если вы уверены, что в исходном диапазоне данных нет пустых ячеек, то можно использовать короткую и элегантную формулу массива:
Не забудьте ввести ее как формулу массива, т.е. нажать после ввода формулы не Enter, а сочетание Ctrl+Shift+Enter.
Технически, эта формула пробегает по всем ячейкам массива и вычисляет для каждого элемента количество его вхождений в диапазон с помощью функции СЧЕТЕСЛИ (COUNTIF) . Если представить это в виде дополнительного столбца, то выглядело бы оно так:
Потом вычисляются дроби 1/Число вхождений для каждого элемента и все они суммируются, что и даст нам количество уникальных элементов:
Способ 2. Если есть пустые ячейки
Если в диапазоне встречаются пустые ячейки, то придется немного усовершенствовать формулу, добавив проверку на пустые ячейки (иначе получим ошибку деления на 0 в дроби):
Содержание
- Разные значения против уникальных значений
- Подсчет разных значений в сводной таблице Excel
- Добавление вспомогательного столбца в набор данных
- Подсчет количества определенного значения ячейки в Excel при условии
- Статистический анализ посещаемости с помощью функции СЧЁТЕСЛИ в Excel
- Способ 1: счетчик на строке состояния
- Способ 2: функция СЧЁТЗ
- Способ 3: функция СЧЁТ
- Как посчитать количество пустых и непустых ячеек?
- Нулевые строки.
- СЧЕТЕСЛИ с несколькими условиями.
- Количество чисел в диапазоне
- Количество ячеек с несколькими условиями ИЛИ.
- Считаем числа и значения
- Ставим экселю условия
- Разбираемся в критериях
- Задачи на логику
- Средние значения и множественные формулы
- Считаем данные в массиве с пустыми ячейками
- Счёт текстовых строк по условию
Разные значения против уникальных значений
Кажется, что это одно и то же, но это не так.
Ниже приведен пример со списком имен, в столбцах отдельно выделены уникальные и разные имена.
Уникальные значения / имена — это те, которые встречаются только один раз. Это означает, что все имена, которые повторяются и имеют дубликаты, не являются уникальными. Уникальные имена перечислены в столбце D вышеупомянутого набора данных.
Разными значениями / именами являются те, которые встречаются хотя бы один раз в наборе данных. Поэтому, если имя появляется три раза, оно все равно считается разным значением. Такой список можно получить путем удаления повторяющихся значений / имен и сохранения всех разных значений. Разные имена перечислены в столбце C приведенного выше набора данных.
В большинстве случаев, когда люди говорят, что хотят получить уникальные значения в сводной таблице, когда на самом деле имеют в виду разные.
Предположим, у вас есть данные о продажах:
С этим набором данных вам нужно найти ответ на следующие вопросы:
- Сколько сотрудников в каждом регионе (а это не что иное, как количество разных сотрудников в каждом регионе)?
- Сколько сотрудников продали принтер в 2019 году?
Находить сумму сводные таблицы могут мгновенно, чтобы получить количество разных значений, вам нужно будет сделать еще несколько шагов.
Если вы используете Excel 2013 или более поздние версии, в сводной таблице есть встроенная функция, которая быстро подсчитывает количество.
А если вы используете Excel 2010 или ранние версии, вам придется изменить исходные данные, добавив вспомогательный столбец.
В этой статье рассматриваются следующие методы:
- Добавление вспомогательного столбца в исходный набор данных для подсчета разных значений (работает во всех версиях).
- Добавление данных в модель данных и использование параметра «Число различных элементов» (доступно в Excel 2013 и последующих версиях).
Существует третий метод, он называет метод сводной таблицы в сводной таблице.
Добавление вспомогательного столбца в набор данных
Примечание. Если вы используете Excel 2013 и более поздние версии, пропустите этот метод и перейдите к следующему (вам доступна встроенная функция).
Это простой способ подсчета разных значений в сводной таблице, поскольку вам нужно только добавить вспомогательный столбец к исходным данным. После добавления вспомогательного столбца вы легко ответите на вопросы задачи.
Хотя это простой обходной путь, у него есть некоторые недостатки (которые будут рассмотрены далее).
Позвольте мне сначала показать вам, как добавить вспомогательный столбец и посчитать разные значения.
Предположим, у меня есть набор данных, как показано ниже:
Добавьте следующую формулу в столбец F и примените ее ко всем ячейкам, в которых есть данные в соседних столбцах.
= ЕСЛИ (СЧЁТЕСЛИМН ($C$2:C2; C2; $B$2:B2; B2) > 1;0;1)
Приведенная выше формула использует функцию СЧЁТЕСЛИМН для подсчета количества раз, когда имя появляется в данном регионе. Также обратите внимание на диапазоны критериев: $C$2:C2 и $B$2:B2. Это означает, что они продолжают расширяться, когда вы идете вниз по столбцу.
Например, в ячейке F2 диапазон критериев составляет $C$2:C2 и $B$2:B2, а в ячейке F3 эти диапазоны расширяются до $C$3:C3 и $B$3:B3.
Это гарантирует, что функция СЧЁТЕСЛИМН считает первый экземпляр имени как 1, второй экземпляр имени как 2 и так далее.
Поскольку мы хотим получить только разные имена, используется функция ЕСЛИ, которая возвращает 1, когда имя появляется для региона в первый раз, и возвращает 0, когда оно появляется снова. Это гарантирует, что учитываются только разные имена, а не повторы.
Ниже показано, как будет выглядеть таблица, когда вы добавите вспомогательный столбец.
Теперь, когда мы изменили исходные данные, мы можем использовать их для создания сводной таблицы. Подключив вспомогательный столбец, получим количество различных сотрудников в каждом регионе.
Ниже приведены шаги, как сделать это:
- Выберите любую ячейку в таблице.
- Нажмите вкладку «Вставка».
- Нажмите на кнопку Сводная таблица.
- В диалоговом окне «Создание сводной таблицы» убедитесь, что таблица / диапазон указаны правильно (и включает вспомогательный столбец), и выбран «На новый лист» в качестве места размещения.
- Нажмите ОК.
Вышеуказанные шаги вставят новый лист со сводной таблицей.
Перетащите поле «Регион» в область «Строки» и поле «Помощник» в область «Значения».
Вы получите вот такую сводную таблицу:
Теперь вы можете изменить заголовок столбца с «Сумма по полю Помощник» на «Количество сотрудников».
Подсчет количества определенного значения ячейки в Excel при условии
Пример 2. По итогам сдачи экзаменов необходимо составить таблицу, в которой содержатся данные о количестве студентов, сдавших предмет на 5, 4, 3 балла соответственно, а также тех, кто не сдал предмет.
Вид исходной таблицы:
Предварительно выделим ячейки E2:E5, введем приведенную ниже формулу:
=СЧЁТЕСЛИ(B3:B19;D2:D5)
Описание аргументов:
- B3:B19 – диапазон ячеек с оценками за экзамен;
- D2:D5 – диапазон ячеек, содержащих критерии для подсчета числа совпадений.
В результате получим таблицу:
Статистический анализ посещаемости с помощью функции СЧЁТЕСЛИ в Excel
Пример 3. В таблице Excel хранятся данные о просмотрах страниц сайта за день пользователями. Определить число пользователей сайта за день, а также сколько раз за день на сайт заходили пользователи с логинами default и user_1.
Вид исходной таблицы:
Поскольку каждый пользователь имеет свой уникальный идентификатор в базе данных (Id), выполним расчет числа пользователей сайта за день по следующей формуле массива и для ее вычислений нажмем комбинацию клавиш Ctrl+Shift+Enter:
Выражение 1/СЧЁТЕСЛИ(A3:A20;A3:A20) возвращает массив дробных чисел 1/количество_вхождений, например, для пользователя с ником sam это значение равно 0,25 (4 вхождения). Общая сумма таких значений, вычисляемая функцией СУММ, соответствует количеству уникальных вхождений, то есть, числу пользователей на сайте. Полученное значение:
Для определения количества просмотренных страниц пользователями default и user_1 запишем формулу:
В результате расчета получим:
Способ 1: счетчик на строке состояния
Самый простой способ подсчитать ячейки, содержащие данные – это воспользоваться информацией со счетчика, который размещен в правой части строки состояния слева от кнопок переключения режимов просмотра в Excel. Пока на листе выделен диапазон, в котором все элементы пустые или лишь один содержит какое-то значение, данный индикатор скрыт. Счетчик автоматически появляется тогда, когда выделено две или более не пустых ячеек, и сразу показывает их число после слова «Количество».
Но, хотя по умолчанию этот счетчик включен, и только ждет того, когда пользователь выделит определенные элементы, в некоторых случаях он может быть отключен вручную. Тогда актуальным становится вопрос о его включении. Для этого нужно кликнуть правой кнопкой мыши по строке состояния и в открывшемся списке установить галочку напротив пункта «Количество». После этого счетчик опять будет отображаться.
Способ 2: функция СЧЁТЗ
Подсчитать количество заполненных ячеек можно при помощи функции СЧЁТЗ. Она отличается от предыдущего способа тем, что позволяет зафиксировать подсчет определенного диапазона в отдельной ячейке. То есть, для просмотра информации по нему область не нужно будет постоянно выделять.
- Выделяем область, в которую будет выводиться результат подсчета. Кликаем по значку «Вставить функцию».
- Открывается окно Мастера функций. Ищем в представленном списке элемент «СЧЁТЗ». После того, как это наименование выделено, жмем на кнопку «OK».
- Запускается окно аргументов. Аргументами этой функции являются ссылки на ячейки. Ссылку на диапазон можно прописать вручную, но лучше установить курсор в поле «Значение1», куда нужно ввести данные, и выделить соответствующую область на листе. Если нужно произвести подсчет заполненных ячеек в нескольких удаленных друг от друга диапазонах, то координаты второго, третьего и последующего диапазона нужно вводить в поля под названием «Значение2», «Значение3» и т.д. Когда все данные введены. Жмем на кнопку «OK».
- Данную функцию также можно ввести вручную в ячейку или строку формул, придерживаясь следующего синтаксиса:
=СЧЁТЗ(значение1;значение2;…)
- После того, как формула введена, программа в заранее выделенной области показывает результат подсчета заполненных ячеек указанного диапазона.
Способ 3: функция СЧЁТ
Кроме того, для подсчета заполненных ячеек в Экселе существует ещё функция счет. В отличие от предыдущей формулы, она считает только ячейки заполненные числовыми данными.
- Как и в предыдущем случае, выделяем ячейку, куда будут выводиться данные и таким же способом запускаем Мастер функций. В нём выбираем оператора с наименованием «СЧЁТ». Жмем на кнопку «OK».
- Запускается окно аргументов. Аргументы те же самые, что и при использовании предыдущего способа. В их роли выступают ссылки на ячейки. Вставляем координаты диапазонов на листе, в которых нужно подсчитать количество заполненных ячеек числовыми данными. Жмем кнопку «OK».
Для ручного введения формулы придерживаемся следующего синтаксиса:
=СЧЁТ(значение1;значение2;…)
- После этого в области, в которой находится формула, отобразится количество ячеек, заполненных числовыми данными.
Как посчитать количество пустых и непустых ячеек?
Посмотрим, как можно применить функцию СЧЕТЕСЛИ в Excel для подсчета количества пустых или непустых ячеек в указанном диапазоне.
Непустые.
В некоторых руководствах по работе с СЧЕТЕСЛИ вы можете встретить предложения для подсчета непустых ячеек, подобные этому:
СЧЕТЕСЛИ(диапазон;”*”)
Но дело в том, что приведенное выше выражение подсчитывает только клетки, содержащие любые текстовые значения. А это означает, что те из них, что включают даты и числа, будут обрабатываться как пустые (игнорироваться) и не войдут в общий итог!
Если вам нужно универсальное решение для подсчета всех непустых ячеек в указанном диапазоне, то введите:
СЧЕТЕСЛИ(диапазон;”<>” & “”)
Это корректно работает со всеми типами значений – текстом, датами и числами – как вы можете видеть на рисунке ниже.
Также непустые ячейки в диапазоне можно подсчитать:
=СЧЁТЗ(E2:E22).
Пустые.
Если вы хотите сосчитать пустые позиции в определенном диапазоне, вы должны придерживаться того же подхода – используйте в условиях символ подстановки для текстовых значений и параметр “” для подсчета всех пустых ячеек.
Считаем клетки, не содержащие текст:
СЧЕТЕСЛИ( диапазон; “<>” & “*”)
Поскольку звездочка (*) соответствует любой последовательности текстовых символов, в расчет принимаются клетки, не равные *, т.е. не содержащие текста в указанном диапазоне.
Для подсчета пустых клеток (все типы значений):
=СЧЁТЕСЛИ(E2:E22;””)
Конечно, для таких случаев есть и специальная функция
=СЧИТАТЬПУСТОТЫ(E2:E22)
Но не все знают о ее существовании. Но вы теперь в курсе …
Нулевые строки.
Также имейте в виду, что СЧЕТЕСЛИ и СЧИТАТЬПУСТОТЫ считают ячейки с пустыми строками, которые только на первый взгляд выглядят пустыми.
Что такое эти пустые строки? Они также часто возникают при импорте данных из других программ (например, 1С). Внешне в них ничего нет, но на самом деле это не так. Если попробовать найти такие “пустышки” (F5 -Выделить – Пустые ячейки) – они не определяются. Но фильтр данных при этом их видит как пустые и фильтрует как пустые.
Дело в том, что существует такое понятие, как «строка нулевой длины» (или «нулевая строка»). Нулевая строка возникает, когда программе нужно вставить какое-то значение, а вставить нечего.
Проблемы начинаются тогда, когда вы пытаетесь с ней произвести какие-то математические вычисления (вычитание, деление, умножение и т.д.). Получите сообщение об ошибке #ЗНАЧ!. При этом функции СУММ и СЧЕТ их игнорируют, как будто там находится текст. А внешне там его нет.
И самое интересное – если указать на нее мышкой и нажать Delete (или вкладка Главная – Редактирование – Очистить содержимое) – то она становится действительно пустой, и с ней начинают работать формулы и другие функции Excel без всяких ошибок.
Если вы не хотите рассматривать их как пустые, используйте для подсчета реально пустых клеток следующее выражение:
=ЧСТРОК(E2:E22)*ЧИСЛСТОЛБ(E2:E22)-СЧЁТЕСЛИ(E2:E22;”<>”&””)
Откуда могут появиться нулевые строки в ячейках? Здесь может быть несколько вариантов:
- Он есть там изначально, потому что именно так настроена выгрузка и создание файлов в сторонней программе (вроде 1С). В некоторых случаях такие выгрузки настроены таким образом, что как таковых пустых ячеек нет – они просто заполняются строкой нулевой длины.
- Была создана формула, результатом которой стал текст нулевой длины. Самый простой случай:
=ЕСЛИ(Е1=1;10;””)
В итоге, если в Е1 записано что угодно, отличное от 1, программа вернет строку нулевой длины. И если впоследствии формулу заменять значением (Специальная вставка – Значения), то получим нашу псевдо-пустую позицию.
Если вы проверяете какие-то условия при помощи функции ЕСЛИ и в дальнейшем планируете производить с результатами математические действия, то лучше вместо “” ставьте 0. Тогда проблем не будет. Нули всегда можно заменить или скрыть: Файл -Параметры -Дополнительно – Показывать нули в позициях, которые содержат нулевые значения.
СЧЕТЕСЛИ с несколькими условиями.
На самом деле функция Эксель СЧЕТЕСЛИ не предназначена для расчета количества ячеек по нескольким условиям. В большинстве случаев я рекомендую использовать его множественный аналог – функцию СЧЕТЕСЛИМН. Она как раз и предназначена для вычисления количества ячеек, которые соответствуют двум или более условиям (логика И). Однако, некоторые задачи могут быть решены путем объединения двух или более функций СЧЕТЕСЛИ в одно выражение.
Количество чисел в диапазоне
Одним из наиболее распространенных применений функции СЧЕТЕСЛИ с двумя критериями является определение количества чисел в определенном интервале, т.е. меньше X, но больше Y.
Например, вы можете использовать для вычисления ячеек в диапазоне B2: B9, где значение больше 5 и меньше или равно 15:
=СЧЁТЕСЛИ(B2:B11;”>5″)-СЧЁТЕСЛИ(B2:B11;”>15″)
Количество ячеек с несколькими условиями ИЛИ.
Когда вы хотите найти количество нескольких различных элементов в диапазоне, добавьте 2 или более функций СЧЕТЕСЛИ в выражение. Предположим, у вас есть список покупок, и вы хотите узнать, сколько в нем безалкогольных напитков.
Сделаем это:
=СЧЁТЕСЛИ(A4:A13;”Лимонад”)+СЧЁТЕСЛИ(A2:A11;”*сок”)
Обратите внимание, что мы включили подстановочный знак (*) во второй критерий. Он используется для вычисления количества всех видов сока в списке.
Как вы понимаете, сюда можно добавить и больше условий.
Считаем числа и значения
Три полезных вещи, помогающих в работе с программой.
- Сколько чисел находится в массиве, можно рассчитать с помощью формулы СЧЁТ(значение1;значение2;…). Она учитывает только те элементы, которые включают в себя цифры.То есть если в некоторых из них будет прописан текст, они будут пропущены, в то время как даты и время берутся во внимание. В данной ситуации не обязательно задавать параметры по порядку: можно написать, к примеру, =СЧЁТ(А1:С3;В4:С7;…).
- Другая статистическая функция — СЧЕТЗ — подсчитает вам непустые клетки в диапазоне, то есть те, которые содержат буквы, числа, даты, время и даже логические значения ЛОЖЬ и ИСТИНА.
- Обратное действие выполняет формула, показывающая численность незаполненных секций — СЧИТАТЬПУСТОТЫ(массив). Она применяется только к непрерывным выделенным областям.
Ставим экселю условия
Когда нужно подсчитать элементы с определённым значением, то есть соответствующие какому-то формату, применяется функция СЧЁТЕСЛИ(массив;критерий). Чтобы вам было понятнее, следует разобраться в терминах.
Массивом называется диапазон элементов, среди которых ведется учет. Это может быть только прямоугольная непрерывная совокупность смежных клеток. Критерием считается как раз таки то условие, согласно которому выполняется отбор. Если оно содержит текст или цифры со знаками сравнения, мы его берем в кавычки. Когда условие приравнивается просто к числу, кавычки не нужны.
Разбираемся в критериях
Примеры критериев:
- «>0» — считаются ячейки с числами от нуля и выше;
- «Товар» — подсчитываются секции, содержащие это слово;
- 15 — вы получаете сумму элементов с данной цифрой.
Для большей ясности приведу развернутый пример.
Чтобы посчитать ячейки в зоне от А1 до С2, величина которых больше прописанной в А5, в строке формул необходимо написать =СЧЕТЕСЛИ(А1:С2;«>»&А5).
Задачи на логику
Хотите задать экселю логические параметры? Воспользуйтесь групповыми символами * и ?. Первый будет обозначать любое количество произвольных символов, а второй — только один.
К примеру, вам нужно знать, сколько имеет электронная таблица клеток с буквой Т без учета регистра. Задаем комбинацию =СЧЕТЕСЛИ(А1:D6;«Т*»). Другой пример: хотите знать численность ячеек, содержащих только 3 символа (любых) в том же диапазоне. Тогда пишем =СЧЕТЕСЛИ(А1:D6;«???»).
Средние значения и множественные формулы
В качестве условия может быть задана даже формула. Желаете узнать, сколько у вас секций, содержимое которых превышают среднее в определенном диапазоне? Тогда вам следует записать в строке формул следующую комбинацию =СЧЕТЕСЛИ(А1:Е4;«>»&СРЗНАЧ(А1:Е4)).
Если вам нужно сосчитать количество заполненных ячеек по двум и более параметрам, воспользуйтесь функцией СЧЕТЕСЛИМН. К примеру, вы ищите секций с данными больше 10, но меньше 70. Вы пишете =СЧЕТЕСЛИМН(А1:Е4;«>10»;А1:Е4;«<70»).
Помимо этого, у вас есть возможность задать условия И/ИЛИ. Только во втором случае придется использовать сразу несколько правил. Смотрим: вам необходимо найти клетки, в которых слова начинаются с буквы В или Р — пишете =СЧЕТЕСЛИ(А1:Е4;«В*»)+ СЧЕТЕСЛИ(А1:Е4;«Р*»).
Может быть, на первый взгляд вышеизложенные инструкции кажутся вам не совсем понятными. Но применив их несколько раз на практике, вы убедитесь, что они намного упрощают и совершенствуют работу с программой Excel.
Считаем данные в массиве с пустыми ячейками
Давайте посчитаем количество уникальных значений Excel, когда в исходной выборке есть пустые клетки. Для этого сделаем лишь одну небольшую правку в формуле:
=СУММПРОИЗВ(1/СЧЁТЕСЛИ(диапазондиапазон &»»))
Легко заметить, что результат получился на 1 больше, чем в прошлом примере. Это потому, что формула посчитала и пустую ячейку, как уникальные данные. Чтобы этого не было, еще доработаем функцию:
=СУММПРОИЗВ((диапазон<>””)/СЧЁТЕСЛИ(диапазондиапазон &»»))
Теперь получили правильный результат без учёта пустот.
Следующие две формулы выглядят сложнее, но работают быстрее. Используйте их, если программа подвисает при выполнении.
Счёт текстовых строк по условию
Похожее задание, но теперь нужно считать, сколько менеджеров продавали товар с кодом 1001.
А формула такая:
=СУММ(—(ЧАСТОТА(ЕСЛИ(диапазон<>»»;ЕСЛИ(условиедиапазон диапазондиапазон)-СТРОКА(диапазон.первая ячейка)+1)>0))
Вот так можно организовать подсчет одинаковых значений в столбце Excel в самых распространенных случаях. Формулы универсальные, скопируйте их, вставьте свои данные и получите результат.
Источники
- https://excelpedia.ru/bez-rubriki/podschet-raznih-znachenii-v-svodnoi-tablice-excel
- https://exceltable.com/funkcii-excel/primery-funkcii-schetesli
- https://lumpics.ru/how-count-number-of-filled-cells-in-excel/
- https://mister-office.ru/funktsii-excel/function-countif.html
- https://profi-user.ru/podschet-yacheek/
- https://officelegko.com/2019/09/19/podschet-unikalnyh-znachenij-v-excel/
Перейти к содержанию
На чтение 1 мин Опубликовано 05.08.2015
Этот пример показывает, как создать формулу массива, которая подсчитает уникальные значения.
- Воспользуемся функцией COUNTIF (СЧЁТЕСЛИ). Для примера подсчитаем количество чисел 5 в диапазоне A1:A6, используя следующую формулу:
=COUNTIF(A1:A6,5)
=СЧЁТЕСЛИ(A1:A6;5)
- Чтобы подсчитать уникальные значения, добавим функцию SUM (СУММ), 1/, и заменим 5 на A1:A6.
=SUM(1/COUNTIF(A1:A6,A1:A6))
=СУММ(1/СЧЁТЕСЛИ(A1:A6;A1:A6))
- Закончим ввод формулы нажатием Ctrl+Shift+Enter.
Примечание: Строка формул указывает, что это формула массива, заключая её в фигурные скобки {}. Их не нужно вводить самостоятельно. Они исчезнут, когда вы начнете редактировать формулу.
Пояснение:
- Диапазон (массив констант), созданный с помощью функции COUNTIF (СЧЁТЕСЛИ), хранится в памяти Excel, а не в ячейках листа.
- Массив констант выглядит следующим образом: {3;1;1;1;3;3}, что обозначает: три числа 7, одно значение «sun», одно значение «moon», одно число 5, три числа 7, три числа 7.
- Все это сводится к {1/3;1/1;1/1;1/1;1/3;1/3}.
- Этот массив констант используется в качестве аргумента для функции SUM (СУММ), давая результат 4.
Оцените качество статьи. Нам важно ваше мнение: