Суммирование не повторяющихся значений в excel

Подсчет количества уникальных значений

Постановка задачи

Есть диапазон с данными, в котором некоторые значения повторяются больше одного раза:

count-unique1.png

Задача — подсчитать количество уникальных (неповторяющихся) значений в диапазоне. В приведенном выше примере, как легко заметить, на самом деле упоминаются всего четыре варианта.

Рассмотрим несколько способов ее решения.

Способ 1. Если нет пустых ячеек

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

count-unique2.png

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

Технически, эта формула пробегает по всем ячейкам массива и вычисляет для каждого элемента количество его вхождений в диапазон с помощью функции СЧЕТЕСЛИ (COUNTIF). Если представить это в виде дополнительного столбца, то выглядело бы оно так:

count-unique4.png

Потом вычисляются дроби 1/Число вхождений для каждого элемента и все они суммируются, что и даст нам количество уникальных элементов:

count-unique5.png

Способ 2. Если есть пустые ячейки

Если в диапазоне встречаются пустые ячейки, то придется немного усовершенствовать формулу, добавив проверку на пустые ячейки (иначе получим ошибку деления на 0 в дроби):

count-unique3.png

Вот и все дела.

Ссылки по теме

  • Как извлечь из диапазона уникальные элементы и удалить дубликаты
  • Как подсветить дубликаты в списке цветом
  • Как сравнить два диапазона на наличие в них дубликатов
  • Извлечение уникальных записей из таблицы по заданному столбцу с помощью надстройки PLEX


Диапазон суммирования содержит повторяющиеся значения. Сложим только те ЧИСЕЛа, которые не имеют повторов.

В качестве диапазона суммирования возьмем диапазон (

А2:А10

), содержащий

повторяющиеся значения

:

986

; 456; 67;

1

;

34

;

689

; 456;

56

; 67

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

Используем

формулу массива

:

=СУММ(ЕСЛИ(СЧЁТЕСЛИ(A2:A10;A2:A10)=1;A2:A10;»»))

Эту формулу необходимо ввести как

формулу массива

, т.е. после ввода формулы, нужно вместо

ENTER

нажать

CTRL

+

SHIFT

+

ENTER

.

О том как выделить неповторяющиеся значения написано в одноименной статье

Выделение неповторяющихся значений

.


СОВЕТ:

О сложении уникальных значений можно прочитать

здесь

. О сложении повторяющихся значений можно прочитать

здесь

.


Имеется таблица, состоящая из двух столбцов: из столбца с повторяющимися текстовыми значениями и столбца с числами. Создадим таблицу, состоящую только из строк, с уникальными текстовыми значениями. По числовому столбцу произведем суммирование соответствующих значений.

Разовьем идеи, изложенные в статье

Отбор уникальных значений (убираем повторы)

.

Пусть исходная таблица содержит 2 столбца: текстовый –

Список регионов

и числовой —

Объем продаж

. Столбец

Список регионов

содержит повторяющиеся значения (см.

файл примера

). Уникальные значения выделены цветом с помощью

Условного форматирования

.

Задача

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

уникальные

названия регионов (т.е. без повторов), а соответствующие продажи будут просуммированы.

Решение

Создадим

Динамические диапазоны

:

Регионы

(названия регионов из столбца

А

) и

Продажи

(объемы продаж из столбца

B

).

Если в исходный список будет добавлено новое значение, то оно будет автоматически включено в

Динамический диапазон

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

Для создания списка уникальных значений введем в ячейку

D2

формулу массива

:

=ЕСЛИОШИБКА(ИНДЕКС(Регионы; ПОИСКПОЗ(0;СЧЁТЕСЛИ($D$1:D1;Регионы);0));»»)

Не забудьте при вводе вышеуказанной формулы нажать

CTRL+SHIFT+ENTER

. Затем необходимо скопировать формулу вниз (размерность списка уникальных значений должна совпадать с размерностью исходного списка).

Для подсчета суммарных продаж в столбце

E

используем мощную функцию

СУММПРОИЗВ()

:

=СУММПРОИЗВ((Регионы=D2)*Продажи)

Отображение нулей в строках, в которых нет регионов, уберем

пользовательским форматом

# ##0;-# ##0; (см. статью

Скрытие значений равных 0

).

Тестируем

1. Введите в ячейку

А11

новый регион —

Китай

2. Введите объем продаж —

100

3. Введите в

А12



Китай

4. Введите объем продаж —

500

5. В соседней таблице справа в ячейке

D7

будет выведено название региона

Китай

с суммарным объемом продаж

600


СОВЕТ:

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

Сводных таблиц

(см.

файл примера

).

Как сложить и удалить дубли в Excel.

​Смотрите также​​ Step -1​Name_Wb_I = Workbooks.Item(Int(InputBox(s,​​Call Toolbar(CInt(Sh), CInt(Sh_Ob))​ понял.​ я бы применил​Option Explicit​ $F3 , а​: А сводная, промежду​ так, чтобы количество​5​ помощью функции​
​Формулы​. Используйте диапазон​ приводим ссылку на​ сводную таблицу, читайте​
​ на другом листе,​
​Рассмотрим,​If Arr_I(0, i)​ «Выбрать номер книги»))).Name​​Next i​​Я решил свою​ штатное средство «удалить​​Function Ran(i As​
​ ведь их необходимо​ прочим, у ТС​ просуммировалось.​1 и т.д.​ЧАСТОТА​в группе​ уникальных значений, которые​ оригинал (на английском​ в статье «Сводные​ то в диалоговом​как сложить и удалить​ = «1» Then​Workbooks.Item(Name_Wb_I).Activate​
​MisterYu​ задач своим путем,​ дубликаты» и потом​ Integer, j As​ сначала туда вывести(((​ уже есть -​Например, в таблице​мне нужна сумма​можно, например, подсчитать​Зависимости формул​ были скопированы в​ языке) .​​ таблицы Excel».​
​ окне консолидации в​ дубли в Excel​Rows(i).Delete​Range(Cells(1, 1), Cells(1,​
​: Полный код если​ которым мне понятнее​ подсчет суммы для​ Integer) As String​Михаил С.​ на Лист 2​ 3 раза встречается​ по Ане, Мане,​ количество результатов тестирования,​
​нажмите кнопку​ качестве аргумента, за​Предположим, что требуется определить​Но мы сделаем​ строке «создавать связи​
​. Как выделить дубли​End If​
​ 1)).Select​ кому нужно​ и скорость работы​
​ каждого из источника​If Range(Cells(i, j),​: Сводная здесь лучше​ …​ товар Y000001 (1​
​ Тане и т.д.​ попадающих в определенные​
Сложить и удалить дубли в Excel.​Показывать формулы​ исключением заголовок столбца.​ количество уникальных значений​ проще и быстрее.​
​ с исходными данными»​ в Excel, читайте​Sh = Sh​Col_I = Cells(Rows.Count,​Option Explicit​ меня устраивает.​and_evg​ Cells(i, j)).Text =​ всего справится.​Юрий М​ шт., 2 шт.​Длина столбца огромная,​ интервалы. Поскольку данная​.​ Например если диапазон​ в диапазоне, содержащем​ Выделяем таблицу, нажимаем​​ поставили галочку. Теперь,​ в статье «Как​ + 1​ 2).End(xlUp).Row​Dim Col As​Если кому интересно,​: Или воспользоваться сводной​
​ «» Then​
​Serge 007, я​: Я и не​ и 3 шт.).​
​ повторяющиеся значения вразнобой​ функция возвращает массив,​1​ уникальных значений B2:B45,​ повторяющиеся значения. Например,​ сочетание клавиш Ctrl​ если в столбце​ выделить повторяющиеся значения​Call Toolbar(CInt(Sh), CInt(Sh_Ob))​
​Nomer_Str_I = Int(InputBox(«Введите​ Integer​ то напишу как​ таблицей​Ran = 0​ правильно понял? :)​ посмотрел )) Вот​ Нужно сделать так,​
​ и разные по​ ее необходимо вводить​2​
​ введите​ если столбец содержит:​ + T (английская​
​ В изменятся цифры,​ в Excel» тут.​Next i​ номер строки по​
​Dim s As​ решил.​MisterYu​Else​Юрий М​ файл с макросом​ чтобы дубли удалились​ количеству (может быть​ как формулу массива.​​3​=ROWS(B2:B45)​числа 5, 6, 7​
​ на любой раскладке).​ то и в​ Как удалить повторяющиеся​Application.Calculation = xlCalculationAutomatic​ которому будет идти​
​ String​1 этап​: Прилагаю.​Ran = Range(Cells(i,​: Пока Prist добирается​
​ и диаграммой.​ и осталась только​ две Ани и​
​Функция​
​4​.​ и 6, будут​ Получилась такая сводная​ этой таблице данные​ значения, смотрите в​Application.ScreenUpdating = True​ сверка», «Окно ввода​
​Dim wb As​Загоняем данную таблицу​Упс файл 1,1​ j), Cells(i, j)).Value​ домой.​Arkadius​ 1 строка с​ пять Саш…)​ПОИСКПОЗ​5​
​К началу страницы​ найдены три уникальных​

​ таблица с фильтрами.​ пересчитаются автоматически. Проверяем​ статье «Как удалить​Application.EnableEvents = True​ по реєстру для​

excel-office.ru

Подсчет повторяющихся значений (Дубликатов) в MS EXCEL

​ Workbook​ в массив:​ мб. а тут​End If​ot kaz​

​: спасибо, покурил немного​ товаром Y000001. Но​​на выходе мне​​выполняет поиск указанного​6​Для выполнения этой задачи​ значения — 5, 6​ Внизу столбца В​ – изменим цифру​ дубли в Excel».​​Application.DisplayStatusBar = True​​ книги » +​

​Dim Name_Wb As​For i =​​ ограничение​​End Function​: The_Prist, браво!!!​ разных тем и​ чтобы его количество​

​ в идеале, чтобы​ элемента в диапазоне​7​ используйте комбинацию функций​ и 7;​ установили автосумму.​

​ 12 в ячейке​

​Итак, нам нужно​End Sub​ Name_Wb_I))​ String​ Nomer_Str_I To Col_I​

​Максимальный размер файла​
​Sub Base()​Только коректировка нужна,​ действительно через сводную​ было 6 шт.​ было​ ячеек и возвращает​8​ЕСЛИ​строки «Руслан», «Сергей», «Сергей»,​

excel2.ru

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

​Выберем фильтром дубли 1.​​ В2 основной таблицы​ перед удалением дублей,​Sub Макрос6()​Nomer_Col_I = Int(InputBox(«Введите​Public Stop_Pr As​If Stop_Pr Then​ 100 Kb​Dim Name_Wb_I, Name_Wb_J​ а именно с​ таблицу вывел сколько​ (суммой всех строк​Аня 46​ относительную позицию этого​9​,​ «Сергей», будут найдены​ Получилось так.​ на цифру 2.​ их сложить. Рассмотрим​Call Wb_Books​ номер колонки по​

​ Boolean​Exit For​Обрежу таблицу.​ As String​ СУММА ЧИСЕЛ.. то​

  • ​ раз повторяется та​ этого товара).​Маня 32​ элемента в диапазоне.​10​

  • ​СУММ​ два уникальных значения —​Как написать данные одновременно​ Получилось так.​

​ несколько способов.​UserForm1.Show​ которому будет идти​

В этой статье

​Function Ran(i As​End If​

​П.С. Добавил​Dim Col_I, Col_J​

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

​ есть в Вашем​​ или иная дата.​​И совсем в​Ксюша 15 и​ Например, если диапазон​A​,​ «Руслан» и «Сергей».​​ в нескольких ячейках,​​Как работать с таблицей​Первый способ.​Call Base​

  1. ​ сверка», «Окно ввода​ Integer, j As​Arr_I(1, i) =​Hugo​

    ​ As Integer​ решении.. лист Result​ Теперь вот вопрос.​

  2. ​ идеале, чтобы оставалась​​ т.д.​​ A1:A3 содержит значения​​B​​ЧАСТОТА​​Существует несколько способов подсчета​​ смотрите в статье​

    ​ консолидации, как объединить​​Самый простой способ​​End Sub​

  3. ​ по реєстру для​​ Integer) As String​ i​​: Покажите рабочий код.​

  4. ​Dim Nomer_Str_I, Nomer_Col_I,​​Столбец Часы1 Строка​​ К примеру у​ строка с наименьшей​

    ​т.е. первый столбец​​ 5, 25 и​ Изображение кнопки​Данные​,​ количества уникальных значений​ «Как заполнить ячейки​​ несколько таблиц в​ Изображение кнопки​ – это использовать​

  5. ​MisterYu​​ книги » +​​If Range(Cells(i, j),​​Arr_I(2, i) =​​Может он был​

    ​ Nomer_I_X, Nomer_Str_J, Nomer_Col_J,​ Физика не 1,​ меня 3 раза​ ценой.​ — идентификационный номер,​​ 38, то формула​​Данные​

  6. ​ПОИСКПОЗ​ среди повторяющихся.​ в Excel одновременно».​​ одну консолидацией, читайте​​ функцию​: Кстати название темы​ Name_Wb_I))​ Cells(i, j)).Text =​ Ran(CInt(i), CInt(Nomer_Col_I))​ в файле, не​ Nomer_J_X, Nomer_J_X1 As​ 5, 8, а​​ повторилось 07.02.13, 4​​На примере того​

​ второй столбец сумма​

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

​=ПОИСКПОЗ(25,A1:A3,0)​986​​и​​Подсчет количества уникальных значений​​Произведем подсчет всех повторяющихся​​ в статье «Как​​«Консолидация» в Excel​​ не соответствует задаче.​​Nomer_I_X = Int(InputBox(«Введите​​ «» Then​​Arr_I(3, i) =​​ знаю — у​

  • ​ Integer​ нужна СУММА этих​ раза 08.02.13 и​​ же товара Y000001.​​ повторяющихся значений.​

  • ​возвращает значение 2,​​Руслан​​ДЛСТР​

  • ​ с помощью фильтра​ значений в списке,​​ объединить таблицы в​​. У нас такая​​Суть задачи такова:​​ номер колонки начала​Ran = 0​ CDbl(Ran(CInt(i), CInt(Nomer_I_X)))​ меня админы код​Dim i, j​ чисел то есть​ другие даты разное​ У него разные​jakim​ поскольку элемент 25​

  • ​Дмитрий​.​Подсчет количества уникальных значений​​ содержащем повторы. Диапазон​​ Excel».​ таблица​ поиск в столбце​​ записи данных», «Окно​​Else​Arr_I(4, i) =​ режут. Но тот,​

  • ​ As Integer​ 14!​​ кол-во раз. Как​​ цены 10 грн,​: Консолидацией, сводной таблицей.​

Пример

​ является вторым в​563​Назначьте значение 1 каждому​ с помощью функций​

​ может содержать текстовые​

  1. ​Второй способ.​.​

  2. ​ одинаковых значений, при​ ввода по реєстру»))​

    ​Ran = Range(Cells(i,​​ Ran(CInt(i), CInt(Nomer_Col_I) +​ что в теме​

    Выделение примера в справке

    ​Dim Num, S1,​

  3. ​ot kaz​

  4. ​ это свести в​ 11 грн и​KuklP​

  5. ​ диапазоне.​67​ из истинных условий​С помощью диалогового окна​ значения и числа.​Сложить все дубли​​Нам нужно сложить все​​ нахождении которых удалить​​Application.ScreenUpdating = False​​ j), Cells(i, j)).Value​​ 2)​​ — не работает.​

​ S2 As String​

​: Да! То что​

​ график?​

​ 12 грн. Чтобы​

​: Как раз она-то​

​Функция​

​789​

​ с помощью функции​

​Расширенный фильтр​

​Если исходный список содержит:​

​ с помощью формул.​

​ числа в столбце​

​ одинаковые строки при​

​Application.Calculation = xlCalculationManual​

​End If​

​Sh = Sh​

​И вообще зачем​

​Dim Arr_I(3, 17000)​

​ нужно, буду тестить​

​Z​

​ оставалась минимальная цена​

​ лучше всего и​

​ДЛСТР​

​235​

​ЕСЛИ​

​можно извлечь уникальные​

​ {​

​ Таблица та же.​

​ В по каждому​

​ этом просуммировать значение​

​Application.EnableEvents = False​

​End Function​

​ + 1​

​ в файле 1000​

​ As String​ завтра отпишусь ;)​: См.​ 10 грн. Но​ подходит. Или объясните​

​возвращает число символов​

​Руслан​.​ значения из столбца​11212​Принцип такой. Создаем​ дублю из столбца​

​ соседнего столбца.​

​Application.DisplayStatusBar = False​Private Sub Wb_Books()​Call Toolbar(CInt(Sh), CInt(Sh_Ob))​ строк? Достаточно и​Dim Check As​Serge​

​ot kaz​​ это уже совсем​

  • ​ почему.​ в текстовой строке.​Дмитрий​Вычислите сумму, используя функцию​ данных и вставить​}. Тогда количество значений,​ дополнительный столбец, в​

  • ​ А – отдельно​Пример​Workbooks.Item(Name_Wb_I).Activate​Col = 0​Next i​​ десяти.​​ Boolean​​: Естественно:-)​​: Господа,помогите решить проблему.​​ в идеале -​​tamriko11​

Описание функций

  • ​Функция​​689​​СУММ​ их в новое​ которые повторяются будет​ ячейках которого будем​ все ячейки с​​11 10,0​​Sh_Ob = Col_I​s = «»​2 этап​А так да,​Dim SumAs Double​ot kaz​Имею таблицу в​

  • ​ если это сильно​​: сводная таблица не​​СУММ​789​.​ местоположение. С помощью​ равно 5, т.е.​ писать название дубля,​ цифрой 1, отдельно​11 15,0​ — (Nomer_Col_I -​​For Each wb​​Ищу одинаковые значение​ сводная, или удалить​Application.ScreenUpdating = False​: 2The_Prist. Donate на​

  • ​ три столбца (№)​​ сложно, то не​​ подходит, потому что​вычисляет сумму всех​

  • ​Дмитрий​​Подсчитайте количество уникальных значений​​ функции​ {1, 1, 2,​ который нужно сложить.​ все ячейки с​22 20,0​ 1)​ In Workbooks​ в массиве по​ на копии дубликаты​​Application.Calculation = xlCalculationManual​​ ЯД.​ (Вид) (Часы)​ обязательно.​ сумму «итого» по​

  • ​ чисел, указанных в​​143​​ с помощью функции​ЧСТРОК​ 1, 2} (значения​ Мы будем писать​ цифрой 2, т.д.​11 5,0​Sh = 0​

​Col = Col​

support.office.com

Суммирование повторяющихся значений

​ Arr_I(2, i).​​ и просуммировать формулой.​Application.EnableEvents = False​По делу..​1. Как решить​Чего-то подобного на​
​ идентификационному номеру мне​
​ качестве аргументов. Каждый​
​56​
​ЧАСТОТА​
​можно подсчитать количество​
​ в исходном массиве​
​ дубли в ячейках​
​ Мы не знаем,​
​22 5,0​
​For i =​
​ + 1​
​После нахождению суммирую​
​Или как вариант:​
​Application.DisplayStatusBar = False​
​Все в принципе​
​ задачу суммирования значений​
​ форуме не нашёл,​
​ надо подставить в​
​ аргумент может быть​
​237​
​. Функция​
​ элементов в новом​
​ выделены​
​ С2, С3, С4,​
​ сколько и какие​
​Результат​
​ Nomer_Str_I To Col_I​If wb.Name =​ значение соответственно Arr_I(3,​
​Sub tt()​Check = False​ работает замечательно. Вот​ (Часы) по одинаковым​ поэтому обращаюсь к​ другую таблицу с​
​ диапазоном, ссылкой на​67​ЧАСТОТА​
​ диапазоне.​
​жирным​
​ С5.​ у нас дубли​
​11 30,0​If Stop_Pr Then​ «» Then​ i) и записываю​

​Dim a, i&,​​Sum = 0​

​ только заполнил 100​​ значениям (Вид)?​ Вам.​ помощью ВРП​ ячейку, массивом, константой,​

​235​​пропускает текстовые и​Выделите диапазон ячеек или​).​А в следующем​ в большой таблице.​22 25,0​Exit For​
​wb.Close True​ признак повторения (​ ii&, s$​Stop_Pr = False​

​ строк значениями из​​2. Можно ли​buchlotnik​
​а как из​
​ формулой или результатом​Формула​

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

​На новом листе​​sboy​End If​

​Else​​ у меня «1»)​

​With [c1].CurrentRegion​​Nomer_Col_I=3​ другой таблицы(копировать-вставить-специальная вставка-значения)​ дополнительно при суммировании​: сводная устроит?​
​ сводной таблицы потом​ выполнения другой функции.​Описание (результат)​

​ первого вхождения заданного​​ что активная ячейка​ находится в диапазоне​ которая будет искать​ делаем активной ячейку.​: Добрый день.​Arr_I(1, i) =​:)

planetaexcel.ru

Удаление дубликатов строк с суммированием значений (Формулы/Formulas)

​Name_Wb = wb.Name​​ в массив Arr_I(0,​a = .Value:​For i =​
​ в итоге при​ в столбце (№)​frion​ воспользоваться ВРП я​ Например, функция​=СУММ(ЕСЛИ(ЧАСТОТА(A2:A10,A2:A10)>0,1))​ значения эта функция​ находится в таблице.​
​А7:А16 ​ дублирующие данные в​ Мы, в нашем​Вам конечно с​
​ i​s = s​ j) = «1»​ .Clear​ Nomer_Str_I To Col_I​ нажатии на «создать​ вывести номера строк​: Спасибо большое! Результат​ не знаю​СУММ(A1:A5)​Подсчет количества уникальных числовых​ возвращает число, равное​Убедитесь в том, что​(см. файл примера), то​
​ первом столбце и​ примере, сделаем активной​ этим работать, но​Arr_I(2, i) =​
​ + Name_Wb +​Код​End With​If Stop_Pr Then​ отчет» процесс обсчета​ которые сумировались.​ мне подходит. Всё​Lyco​вычисляет сумму всех​ значений в диапазоне​ общему количеству его​ диапазон ячеек содержит​ число повторяющихся значений​
​ складывать цифры по​ ячейку Е2 на​ на мой взгляд​ Ran(CInt(i), CInt(Nomer_Col_I))​

​ » =» +​​For i =​

​With GetObject(«New:{EE09B103-97E0-11CF-978F-00A02463E06F}»)​​Exit For​ занимает примерно 2​Пример прикреплен.​ просто, а такая​

​: 1. Данные -​​ чисел в ячейках​

​ A2:A10 без учета​​ вхождений. Для каждого​ заголовок столбца.​

excelworld.ru

сумма повторяющихся значений

​ можно вычислить с​​ дублям из второго​ этом же листе.​ очень не оптимально​
​Arr_I(3, i) =​ Str(Col) + vbCrLf​ Nomer_Str_I To Col_I​For i =​End If​ мин.​В какую сторону​ большая экономия времени!​ Удалить дубликаты.​ от A1 до​ пустых ячеек и​ последующего вхождения того​На вкладке​ помощью формулы =СУММПРОИЗВ(—(СЧЁТЕСЛИ(A7:A16;A7:A16)>1))​ столбца.​ На закладке «Данные»​Вот как я​ CDbl(Ran(CInt(i), CInt(Nomer_I_X)))​End If​For j =​ 1 To UBound(a)​

​For j =​​Это нормально? Или​ хоть копать, подскажите?​;)
​Stics​

​2. СУММЕСЛИ.​​ A5.​ текстовых значений (4)​ же значения функция​Данные​Формула хороша тем, что​

​В ячейке D2​​ в разделе «Работа​ предлагал в сообщении№2,​Arr_I(4, i) =​Next wb​ i + 1​;)

​s = a(i,​​ i + 1​ с форматами у​Заранее спасибо за​: можно и формулами​

​Или я чего-то​​Функция​=СУММ(ЕСЛИ(ЧАСТОТА(ПОИСКПОЗ(B2:B10,B2:B10,0),ПОИСКПОЗ(B2:B10,B2:B10,0))>0,1))​ возвращает ноль.​в группе​ производит подсчет и​ пишем такую формулу.​ с данными» нажимаем​ тоже не оптимизировал,​ Ran(CInt(i), CInt(Nomer_Col_I) +​End Sub​ To Col_I​ 1)​ To Col_I​ меня че не​ помощь.​

​frion​​ не понимаю?​

planetaexcel.ru

Суммирование одинаковых значений в списке?

​ЕСЛИ​​Подсчет количества уникальных текстовых​
​Узнайте номер позиции текстового​Сортировка и фильтр​ текстовых и числовых​
​ =СУММЕСЛИ(A2:A9;C2;B2:B9)​ на кнопку функции​ но на большом​ 2)​
​Sub Toolbar(k As​If Arr_I(2, i)​If .exists(s) Then​If Ran(CInt(i), CInt(Nomer_Col_I))​ так?​
​ot kaz​
​: Спасибо! С формулами​The_Prist​
​возвращает одно значение,​ и числовых значений​

​ значения в диапазоне​​нажмите кнопку​ значений, кроме того,​
​В ячейку D3​ «Консолидация». Выйдет диалоговое​ объеме информации скорость​Sh = Sh​

​ Integer, Full As​ = Arr_I(2, j)​a(.Item(s), 2) =​
​ = Ran(j, CInt(Nomer_Col_I))​Попробуйте. Файл прилагаю.​: The_Prist, спасибо за​ тоже ОЧЕНЬ удобно!​: ВРП — это​
​ если указанное условие​ в диапазоне B2:B10,​ с помощью функции​Дополнительно​

​ она игнорирует пустые​​ пишем такую формулу.​ окно.​

​ ощутите в разы​​ + 1​ Integer)​ And Arr_I(2, i)​ a(.Item(s), 2) +​ Then​Юрий М​
​ скорую помощь!​Arkadius​ что-то новое. Наверное,​ дает в результате​ который не должен​ПОИСКПОЗ​.​ ячейки.​ =СУММЕСЛИ(A3:A9;C3;B3:B9)​Заполнили его так:​Sub Макрос2()​Call Toolbar(CInt(Sh), CInt(Sh_Ob))​

​With UserForm1​​ <> «0» Then​ a(i, 2)​
​Sum = Sum​: У меня практически​

​Тоже бился с​​: Здравствуйте, уважаемые знатоки.​ ВПР?​

​ значение ИСТИНА, и​​ содержать пустые ячейки​
​. Возвращенное значение затем​Появится диалоговое окно​ ​По такому принципу​В строке «Функция»​
​Application.ScreenUpdating = False​Next i​.Frame1.Caption = «Процесс​Sum = Sum​Else​ + CDbl(Ran(j, CInt(Nomer_I_X)))​

​ мгновенно.​​ СУММЕСЛИ, но видимо​ Помогите решить несложную​jakim​

​ другое, если условие​​ (7)​

​ используется в качестве​​Расширенный фильтр​Повторяющиеся значения на рисунке​

​ написать формулы в​
​ выбрали функцию «Сумма».​Application.DisplayAlerts = False​Check = False​ » + Str(k)​ + CDbl(Arr_I(3, j))​ii = ii​Range(Cells(j, 1), Cells(j,​ot kaz​ была ошибка в​ задачку в EXCEL.​
​: Высылаю Ваш пример​ дает в результате​=СУММ(ЕСЛИ(ЧАСТОТА(ЕСЛИ(ДЛСТР(A2:A10)>0,ПОИСКПОЗ(A2:A10,A2:A10,0),»»),ЕСЛИ(ДЛСТР(A2:A10)>0,ПОИСКПОЗ(A2:A10,A2:A10,0),»»))>0,1))​ аргумента функции​
​.​

​ выделены с помощью​​ других ячейках столбца​ Можно выбрать другие​

​’t = Timer​​Sum = 0​ + » /»​
​Arr_I(0, j) =​ + 1: .Item(s)​

​ 10)).Delete Shift:=xlUp​: Действительно была открыта​ формуле.​Есть столбец с​ с применение консолидации.​ значение ЛОЖЬ.​Подсчет количества уникальных текстовых​

planetaexcel.ru

Просуммировать ячейки для повторяющихся значений (Макросы/Sub)

​ЧАСТОТА​​Установите переключатель​
​ Условного форматирования (см. статью​ D. Получилось так.​ действия.​
​Set r1 =​Stop_Pr = False​ + Str(Full)​ «1»​ = ii​j = j — 1​ книга.​
​Строк в таблице​ повторяющимися датами. Необходимо​Nic70y​
​К началу страницы​ и числовых значений​
​, что позволяет определить​скопировать результат в другое​ Выделение повторяющихся значений​Эту же формулу можно​

​В строке «Ссылка»​
​ Range(Cells(1, 3), Cells(1,​Sh = 0​.Label2.Caption = Str(100​
​Check = True​a(ii, 1) =​Col_I = Col_I​
​Если она закрыта​
​ может быть до​
​ подсчитать сколько раз​: формулы:​
​tamriko11​
​ в диапазоне A2:A10​
​ количество вхождений текстовых​
​ место​ в MS EXCEL).​
​ написать, вызвав диалоговое​ поставили диапазон нашей​
​ 3).End(xlDown))​For i =​ * Round(k /​End If​
​ a(i, 1): a(ii,​ - 1​
​ то считает моментально!​ 200.​
​ повторяется каждая уникальная​tamriko11​
​: Добрый день, подскажите,​ без учета пустых​
​ значений.​
​.​
​СОВЕТ:​
​ окно функции «СУММЕСЛИ».​
​ таблицы. У нас​
​Set r2 =​
​ Nomer_Str_I To Col_I​
​ Full, 2)) +​
​Next j​
​ 2) = a(i,​Check = True​
​А вот этой​
​Против макроса ничего​
​ дата. Проблема заключается​
​: Jakim спасибо большое,​ пожалуйста, как в​ ячеек и текстовых​
​Найдите пустые ячейки с​В поле​Решение обратной задачи​
​ Она расположена на​ указан фиксированный размер​
​ r1.Offset(0, 1)​For j =​
​ "%"​
​If Check Then​ 2)​
​End If​
​ вариант работает прекрасно​
​ не имею, главное​
​ в том, что​
​ А скажите, пожалуйста,​ Экселе просуммировать повторяющиеся​ значений (6)​
​ помощью функции​
​Копировать​
​ по подсчету неповторяющихся​
​ закладке «Формулы» в​
​ диапазона с абсолютными​
​shn = ActiveSheet.Name​
​ i + 1​
​.Label2.Width = Int(200​
​Range(Cells(i, CInt(Nomer_I_X)), Cells(i,​
​End If​

​Next j​​ и при открытой​
​ наглядно отобразить под​ в ячейке с​ как вы создали​
​ значения. Сводная таблица​Примечания​
​ДЛСТР​введите ссылку на​ значений можно найти​
​ разделе «Библиотека функций»​ ссылками и названием​adr2 = «‘»​ To Col_I​ * (k /​ CInt(Nomer_I_X))).Value = CDbl(Arr_I(3,​

​Next​​If Check Then​ книге! А чем​

​ какими номерами строки​​ датой есть еще​
​ этот файл.​ не подходит.​    ​
​. Пустые ячейки имеют​ ячейку.​
​ здесь:  Подсчет неповторяющихся​
​ нажимаем функцию «Математические»,​

​ столбцов. Можно написать​​ & shn &​
​If Arr_I(2, i)​ Full))​ i)) + Sum​End With​Range(Cells(i, Nomer_I_X), Cells(i,​ он хуже первого?​ суммировались. Поможите?​
​ и время. Время​выделяете таблицу -​пример​Формулы в этом примере​
​ нулевую длину.​Кроме того нажмите кнопку​ значений. Вообще, если​ выбираем «СУММЕСЛИ». Заполним​
​ диапазон с относительными​
​ "'!" & r2.Address(ReferenceStyle:=xlR1C1)​
​ = Arr_I(2, j)​End With​
​Check = False​
​[c1].Resize(ii, 2) =​ Nomer_I_X)).Value = CDbl(Ran(CInt(i),​
​ Проблемы какие могут​
​p.s.Действительно считаю, что​
​ меня не интересует,​ консолидация - а​
​Столбец А​ должны быть введены​
​Чтобы этот пример проще​
​Свернуть диалоговое окно​ от общего количества​ диалоговое окно так.​
​ ссылками.​
​Sheets.Add.Activate​ And Arr_I(2, i)​DoEvents​
​Sum = 0​ a​ CInt(Nomer_I_X))) + Sum​ быть?​
​ в данном случае​
​ нужно подсчитать только​
​ дальше что?​
​Аня​ как формулы массива.​
​ было понять, скопируйте​

​временно скрыть диалоговое​​ значений отнять число​

​В строке «Диапазон» указываем​​Подробнее о видах​With Range(«C1»).Resize(r1.Count, 1)​ <> «0» Then​End Sub​End If​End Sub​Check = False​MisterYu​ СПАСИБО мало будет​
​ количество повторений каждой​tamriko11​

​Маня​​ Выделите все ячейки,​ его на пустой​
​ окно, выберите ячейку​ повторяющихся, то получим​ диапазон столбца А​ ссылок читайте в​
​.Value = r1.Value​Sum = Sum​Sub Base()​Sh = Sh​MisterYu​
​Sum = 0​: Доброго времени суток.​ )))​
​ из дат. В​
​: — спасибо большое,​Таня​

​ содержащие формулу, нажмите​ лист.​
​ на листе и​
​ количество неповторяющихся значений.​
​ с дублями.​
​ статье «Относительные и​.RemoveDuplicates Columns:=1, Header:=xlNo​
​ + CDbl(Arr_I(3, j))​Dim Name_Wb_I, Name_Wb_J​
​ + 1​: Как бы вот.​
​End If​Есть таблица размерностью​Serge​
​ идеале получить еще​ я такое конечно​
​Маня​
​ клавишу F2, а​

​Копирование примера​
​ затем нажмите кнопку​Примечание:​В строке «Критерий»​
​ абсолютные ссылки в​End With​Arr_I(0, j) =​ As String​Call Toolbar(CInt(Sh), CInt(Sh_Ob))​Hugo​Call Toolbar(CInt(i), CInt(Col_I))​
​ 15000 строк и​
​: Ну, тогда не​ и диаграмму которая​
​ бы никогда не​Аня​ затем — клавиши CTRL+SHIFT+ВВОД.​
​Создайте пустую книгу или​Развернуть диалоговое окно​Мы стараемся как​ указываем ячейку столбца​
​ Excel» здесь.​With Range(Cells(1, 3),​
​ «1»​Dim Col_I, Col_J​
​Next i​
​: Ну я ведь​
​Next i​
​ 6 колонок.​
​ лезу :-)​ по одной оси​ составила, но, когда​
​Ксюша​
​Чтобы просмотреть процесс вычисления​
​ лист.​
​.​ можно оперативнее обеспечивать​
​ С, в которой​
​Поставили галочки у​
​ Cells(1, 3).End(xlDown)).Offset(0, 1)​
​Check = True​ As Integer​3 этап​ писал — такое​Application.Calculation = xlCalculationAutomatic​
​Суть макроса в​
​ot kaz​ будет показывать дату​ уже сделано, формулы​
​Аня​ функции по шагам,​
​Выделите пример в разделе​
​Установите флажок​
​ вас актуальными справочными​ будем писать название​
​ слов:​
​adr1 = .Offset(0,​

​End If​​Dim Nomer_Str_I, Nomer_Col_I,​Прохожу обратным циклом​

​ "вот" мне без​
​Application.ScreenUpdating = True​ том что бы​
​: Во вложении полная​ а по другой​
​ понятны​Маня​
​ выделите ячейку с​ справки.​
​Только уникальные записи​ материалами на вашем​
​ дубля.​«подписи верхней строки»​ -1).Address(ReferenceStyle:=xlR1C1)​
​Next j​ Nomer_I_X, Nomer_Str_J, Nomer_Col_J,​ и удаляю строки​
​ толку... Ну да​
​Application.EnableEvents = True​
​ по 3 столбцу​ структура таблицы, сумируются​
​ число повторений этой​
​frion​
​Саша​
​ формулой, а затем​
​Примечание:​
​и нажмите кнопку​ языке. Эта страница​
​В строке «Диапазон​ – это название​
​.FormulaR1C1 = "=SUMIF("​If Check Then​
​ Nomer_J_X, Nomer_J_X1 As​
​ соответствующие признаку в​
​ ладно, выше добавил​
​Application.DisplayStatusBar = True​ искать повторяющиеся значение,​ значения из столбцов​ даты в указанном​
​: Здравствуйте уважаемые знатоки.​
​Паша​
​ на вкладке​
​ Не выделяйте заголовки строк​ОК​ переведена автоматически, поэтому​
​ суммирования» указываем диапазон​
​ столбцов;​ & adr1 &​Range(Cells(i, CInt(Nomer_I_X)), Cells(i,​ Integer​
​ массиве Arr_I(0, j)​ макрос. Если нужно​End Sub​ при найденном просуммировать​
​ Часы1 и Часы2.​ диапазоне. Пример прикладываю​ Столкнулся с такой​
​Глаша​
​Формулы​
​ или столбцов.​
​.​
​ ее текст может​ столбца В, числа​
​«значения левого столбца»​ ",RC[-1]," & adr2​
​ CInt(Nomer_I_X))).Value = CDbl(Arr_I(3,​Dim i, j​ = "1"​ сохранить формат -​
​sboy​ значение 4 столбца​
​ Таблица неизменна только​Z​
​ ситуацией:​Паша​
​в группе​Выделение примера в справке​
​Уникальные значения из выделенного​ содержать неточности и​
​ из ячеек которого​ - это значит,​
​ & ")"​ i)) + Sum​
​ As Integer​
​Код​ можно добавить апостроф​
​: Добрый день.​ для найденных.​
​ таких строк 200.​: Сводная диаграмма с​Есть таблица с​Саша​Зависимости формул​Нажмите клавиши CTRL+C.​ диапазона будут скопированы​
​ грамматические ошибки. Для​ нужно сложить.​ что искать дубли​.Value = .Value​Check = False​Dim Num, S1,​For i =​
​ в строке​Думаю, что нужно​После удалить повторяющиеся​И еще, я​
​ группировкой по ДНЯМ...​
​ перечнем товаров. У​
​Аня​
​нажмите кнопку​
​Выделите на листе ячейку​
​ в новое место,​ нас важно, чтобы​В строке формул​
​ в левом первом​
​End With​Sum = 0​
​ S2 As String​
​ Col_I To Nomer_Str_I​
​a(ii, 1) = "'"​
​ переименовать тему (в​ строки и поставить​
​ как то сразу​см. -​
​ каждого товара есть​Столбец В​
​Вычисление формулы​ A1 и нажмите​ начиная с ячейки,​
​ эта статья была​ сразу видна получившаяся​
​ столбце.​
​'Sheets(shn).Delete​
​End If​
​Dim Arr_I(4, 17000)​
​ Step -1​
​ & a(i, 1)​
​ суть макроса)​ общую сумму.​
​ недопонял, в Вашем​Юрий М​ своя цена и​
​1​.​ клавиши CTRL+V.​ указанной в поле​
​ вам полезна. Просим​ формула.​
​Нажимаем «ОК». Поучилось​'ActiveSheet.Name = shn​
​Sh = Sh​
​ As String​
​If Arr_I(0, i)​
​MisterYu​
​и приложите файл-пример​Данный код не​ решении в итоговой​
​: Получаем к-во по​
​ количество. Но в​
​4​
​Функция​Чтобы переключиться между просмотром​
​Копировать​
​ вас уделить пару​
​Третий способ.​
​ так.​Application.ScreenUpdating = True​ + 1​
​Dim Check As​ = "1" Then​
​: Спасибо Вам за​
​ с данными.​
​ оптимизирован.​ таблице в столбцеF​
​ датам, а уже​
​ табличке есть товары,​
​2​
​ЧАСТОТА​
​ результатов и просмотром​
​.​
​ секунд и сообщить,​
​Создать таблицу с​
​Если таблицу консолидации делаем​
​Application.DisplayAlerts = True​
​Call Toolbar(CInt(Sh), CInt(Sh_Ob))​
​ Boolean​

​Rows(i).Delete​​ помощь.​Чтобы ускорить код,​
​Прошу Вас мне​ значения ведь уже​ по этим данным​ которые дублируются. (пример​4​вычисляет частоту появления​ формул, возвращающих эти​
​В пустую ячейку под​
​ помогла ли она​
​ фильтром. Внизу столбца​
​ на другом листе,​
​’MsgBox Format(Timer -​
​Next i​
​Dim Sum, Sum1​
​End If​
​Я не настолько​

​ нужно написать новый​​ подсказать на мои​
​ стоят и в​ построить диаграмму не​ таблички я прикрепил).​6​
​ значений в диапазоне​ результаты, нажмите клавиши​ последней ячейки в​ вам, с помощью​ В установить автосумму.​ то получится такая​
​ t, "0.00000") &​
​Sh = 0​
​ As Double​
​Sh = Sh​
​ силен в программированию.​ =)​ ошибки по данному​
​ формуле Вы на​ проблема.​
​Нужно удалить дубли​
​3​ и возвращает вертикальный​ CTRL+` (знак ударения)​
​ диапазоне введите функцию​
​ кнопок внизу страницы.​
​ Выбирать фильтром нужные​
​ таблица.​
​ "sec"​
​For i =​Dim Sh, Sh_Ob​
​ + 1​ Ваш код частично​
​Судя по описанию,​ коду.​ них ссылаетесь напр.​Z​
​ из таблицы, но​
​2​
​ массив чисел. С​
​ или на вкладке​
​СТРОК​
​ Для удобства также​
​ дубли. Как сделать​Когда мы делали консолидацию​End Sub​
​ Col_I To Nomer_Str_I​

excelworld.ru

​ As Integer​

Skip to content

Подсчет уникальных значений в Excel

В этом руководстве вы узнаете, как посчитать уникальные значения в 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  есть специальная функция, которая позволяет автоматически пересчитывать различные значения в сводной таблице. На следующем рисунке показано, как выглядит этот счетчик:

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

  1. Выберите данные для включения в сводную таблицу, перейдите на вкладку «Вставка» и нажмите кнопку «Сводная таблица» .
  2. В диалоговом окне «Создание сводной таблицы» выберите, следует ли разместить сводную таблицу на новом или существующем листе, и обязательно установите флажок «Добавить эти данные в модель данных» .

  1. Когда откроется сводная таблица, расположите области строк, столбцов и значений так, как вам нужно. Если у вас нет большого опыта работы со сводными таблицами Excel, могут оказаться полезными следующие подробные рекомендации: Создание сводной таблицы в Excel.
  2. Переместите поле, количество уникальных элементов которого вы хотите вычислить ( поле « Товар» в этом примере), в область « Значения» , щелкните его и выберите «Параметры значения поля…» из раскрывающегося меню.
  3. Откроется диалоговое окно , прокрутите вниз до операции «Число разных элементов» , которая является самым последним пунктом в списке, выберите ее и нажмите OK .

Вы также можете дать собственное имя своему счетчику, если хотите.

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

Вот как можно подсчитать различные и уникальные значения в столбце и целиком в таблице Excel. 

Благодарю вас за чтение и надеюсь увидеть вас снова. Пожалуйста, не переключайтесь!

Как найти и выделить уникальные значения в столбце В статье описаны наиболее эффективные способы поиска, фильтрации и выделения уникальных значений в Excel. Ранее мы рассмотрели различные способы подсчета уникальных значений в Excel. Но иногда вам может понадобиться только просмотреть уникальные…
Как получить список уникальных значений В статье описано, как получить список уникальных значений в столбце с помощью формулы и как настроить эту формулу для различных наборов данных. Вы также узнаете, как быстро получить отдельный список с…
Как выделить цветом повторяющиеся значения в Excel? В этом руководстве вы узнаете, как отображать дубликаты в Excel. Мы рассмотрим различные методы затенения дублирующих ячеек, целых строк или последовательных повторений с использованием условного форматирования.  Ранее мы исследовали различные…
Как посчитать количество повторяющихся значений в Excel? Зачем считать дубликаты? Мы можем получить ответ на множество интересных вопросов. К примеру, сколько клиентов сделало покупки, сколько менеджеров занималось продажей, сколько раз работали с определённым поставщиком и т.д. Если…
Как убрать повторяющиеся значения в Excel? В этом руководстве объясняется, как удалять повторяющиеся значения в Excel. Вы изучите несколько различных методов поиска и удаления дубликатов, избавитесь от дублирующих строк, обнаружите точные повторы и частичные совпадения. Хотя…

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

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;

  • строки «Руслан», «Сергей», «Сергей», «Сергей», будут найдены два уникальных значения — «Руслан» и «Сергей».

Существует несколько способов подсчета количества уникальных значений среди повторяющихся.

С помощью диалогового окна Расширенный фильтр можно извлечь уникальные значения из столбца данных и вставить их в новое местоположение. Затем с помощью функции ЧСТРОК можно подсчитать количество элементов в новом диапазоне.

  1. Выделите диапазон ячеек или убедитесь, что активная ячейка находится в таблице.

    Убедитесь в том, что диапазон ячеек содержит заголовок столбца.

  2. На вкладке Данные в группе Сортировка и фильтр нажмите кнопку Дополнительно.

    Появится диалоговое окно Расширенный фильтр.

  3. Установите переключатель скопировать результат в другое место.

  4. В поле Копировать введите ссылку на ячейку.

    В противном случае нажмите Свернуть диалоговое окно Изображение кнопки для временного скрытия диалогового окна, выберите ячейку на листе, а затем нажмите Развернуть диалоговое окно Изображение кнопки.

  5. Установите флажок Только уникальные записи и нажмите ОК.

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

  6. В пустой ячейке под последней ячейкой диапазона введите функцию ЧСТРОК. Используйте диапазон скопированных уникальных значений в качестве аргумента, исключив заголовок столбца. Например, если уникальные значения содержатся в диапазоне 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.

См. также

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

Нужна дополнительная помощь?

На чтение 11 мин. Просмотров 13.9k.

Содержание

  1. Числовые значения
  2. Текстовые значения
  3. В диапазоне с СЧЁТЕСЛИ

Числовые значения

В диапазоне

= СУММ(—(ЧАСТОТА(данные; данные)>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. Так что эта версия формулы не будет выдавать ошибку, когда есть пустые ячейки, но она будет включать в себя пустые ячейки в счете. Если вы хотите исключить пустые ячейки в счете, используйте:

=СУММПРОИЗВ((данные <> «»)/СЧЁТЕСЛИ(данные;данные и «»))

Низкая производительность?

Это крутая и элегантная формула, но она вычисляет гораздо медленнее, чем формулы, которые используют ЧАСТОТА для подсчета уникальных значений. Для больших наборов данных, вы можете переключиться на формулу, основанную на частотную функцию.

Понравилась статья? Поделить с друзьями:
  • Суммировать все одинаковые позиции в excel
  • Суммирование нарастающим итогом excel
  • Суммировать диапазон по условию excel
  • Суммировать все данные всех листов в excel
  • Суммирование между датами excel