Подсчёт уникальных значений в Microsoft Excel или Google Таблицах — одна из самых востребованных задач при анализе данных. Но что делать, если нужно учитывать только те значения, которые соответствуют определённому условию? Например, посчитать количество уникальных клиентов из конкретного региона или количество уникальных товаров в категории «Электроника» за последний квартал.
Без знания специальных формул или инструментов эта задача может занять часы ручной работы. Однако в Excel есть как минимум 7 способов решить её быстро: от простых функций вроде СЧЁТЕСЛИМН до продвинутых инструментов вроде Power Query или UNIQUE в новых версиях. В этой статье разберём каждый метод с пошаговыми инструкциями, примерами и нюансами, которые помогут избежать ошибок.
Если вы новичок, начните с первых трёх разделов — там объяснены базовые подходы. Опытным пользователям будет полезен раздел про Power Query и динамические массивы, которые экономят время при работе с большими данными.
⚠️ Внимание: В Excel 2019 и старше (включая Microsoft 365) доступны функции динамических массивов (UNIQUE, FILTER), которые сильно упрощают задачу. Если у вас более старая версия, используйте альтернативные методы из этой статьи.
1. Базовый метод: комбинация СЧЁТЕСЛИ + вспомогательный столбец
Самый простой способ посчитать уникальные значения по условию — использовать функцию СЧЁТЕСЛИ (COUNTIF) вместе со вспомогательным столбцом. Этот метод работает во всех версиях Excel, включая Excel 2010.
Допустим, у вас есть таблица с данными о продажах:
| Товар | Категория | Регион |
|---|---|---|
| Ноутбук A | Электроника | Москва |
| Смартфон B | Электроника | СПб |
| Ноутбук A | Электроника | Москва |
| Часы C | Аксессуары | Казань |
| Смартфон B | Электроника | Москва |
Задача: посчитать количество уникальных товаров в категории «Электроника». Для этого:
- Создайте вспомогательный столбец (например,
D) с формулой:=СЧЁТЕСЛИ($A$2:A2;A2)Эта формула вернёт
1для первого вхождения товара и0для дубликатов. - В ячейке с результатом (например,
E2) используйте формулу:=СУММПРОИЗВ(--(D2:D6=1);--(B2:B6="Электроника"))Здесь
D2:D6=1отбирает уникальные значения, аB2:B6="Электроника"— фильтрует по категории.
✅ Плюсы: работает в любых версиях Excel, не требует дополнительных надстроек.
❌ Минусы: нужно создавать вспомогательный столбец, формула может тормозить на больших данных.
2. Формула массива: СУММПРОИЗВ + ЕСЛИ + ЧАСТОТА
Для тех, кто не хочет создавать вспомогательные столбцы, подойдёт формула массива. Она сложнее, но эффективнее для одноразовых расчётов.
Используем ту же таблицу. Формула для подсчёта уникальных товаров в категории «Электроника»:
=СУММ(--(ЧАСТОТА(ЕСЛИ(B2:B6="Электроника";СТРОКА(A2:A6)-МИН(СТРОКА(A2:A6))+1);СТРОКА(A2:A6)-МИН(СТРОКА(A2:A6))+1)>0))
Разберём, как она работает:
- 🔹
ЕСЛИ(B2:B6="Электроника";...)— фильтрует строки по категории. - 🔹
СТРОКА(A2:A6)-МИН(СТРОКА(A2:A6))+1— присваивает каждой строке уникальный номер. - 🔹
ЧАСТОТАсчитает, сколько раз каждый номер встречается. - 🔹
СУММ(--(ЧАСТОТА>0))— подсчитывает уникальные номера (т.е. уникальные товары).
⚠️ Внимание: Это формула массива — после ввода нажмите Ctrl+Shift+Enter (в Excel 365 это не требуется).
- Данные отсортированы по столбцу с уникальными значениями
- Нет пустых ячеек в диапазоне
- Версия Excel поддерживает формулы массивов (для старых версий используйте {скобки})
-->
3. Функция УНИК в Excel 365 и Google Таблицах
Если у вас Microsoft 365 или Excel 2021, задача упрощается благодаря функции УНИК (UNIQUE). Она автоматически извлекает уникальные значения, а в комбинации с ФИЛЬТР (FILTER) позволяет учитывать условия.
Пример для той же таблицы:
=СЧЁТ(УНИК(ФИЛЬТР(A2:A6;B2:B6="Электроника")))
Как это работает:
ФИЛЬТР(A2:A6;B2:B6="Электроника")— возвращает массив товаров только из категории «Электроника».УНИК— оставляет только уникальные значения в этом массиве.СЧЁТ— подсчитывает количество уникальных элементов.
Это самый короткий и эффективный способ для современных версий Excel. В Google Таблицах формула будет идентичной.
| Версия Excel | Поддерживаемые функции | Пример формулы |
|---|---|---|
| Excel 2019 и старше | УНИК, ФИЛЬТР | =СЧЁТ(УНИК(ФИЛЬТР(...))) |
| Excel 2016 | Нет УНИК | Используйте СУММПРОИЗВ или Power Query |
| Google Таблицы | UNIQUE, FILTER | =COUNTA(UNIQUE(FILTER(...))) |
4. Power Query: мощный инструмент для больших данных
Если вам нужно регулярно считать уникальные значения по условию в больших таблицах (тысячи строк), Power Query станет лучшим решением. Этот инструмент встроен в Excel 2016 и новее (в Excel 2010-2013 требуется надстройка Power Query).
Пошаговая инструкция:
- Выделите исходную таблицу и нажмите
Данные → Из таблицы/диапазона(илиGet Data → From Table/Range). - В редакторе
Power Queryотфильтруйте данные по нужному условию (например, категория = «Электроника»). - Выделите столбец с уникальными значениями (например, «Товар») и нажмите
Главная → Группировка(Group By). - В настройках группировки выберите операцию
Количество уникальных значений(Count Distinct Rows). - Нажмите
Закрыть и загрузить(Close & Load), чтобы получить результат в новой таблице.
✅ Преимущества:
- 🔹 Обрабатывает миллионы строк без тормозов.
- 🔹 Автоматически обновляет результат при изменении исходных данных.
- 🔹 Позволяет комбинировать несколько условий (например, категория + регион).
⚠️ Внимание: Если в данных есть скрытые символы (пробелы, неразрывные пробелы), Power Query может считать их разными значениями. Перед группировкой очистите данные функцией ТRIM.
Как удалить невидимые символы в Power Query?
1. Выделите столбец → Преобразование → Формат → Обрезка (Trim).
2. Для неразрывных пробелов используйте замену: Главная → Заменить значения → замените (alt+0160) на пробел.
5. Сводная таблица: быстрый анализ без формул
Сводные таблицы — ещё один способ посчитать уникальные значения по условию без формул. Подходит для визуального анализа, но имеет ограничения.
Алгоритм:
- Выделите исходную таблицу и нажмите
Вставка → Сводная таблица. - В настройках сводной таблицы перетащите столбец с условием (например, «Категория») в область
Фильтры. - Перетащите столбец с уникальными значениями (например, «Товар») в область
Строки. - В область
Значениядобавьте тот же столбец («Товар») и выберите операциюКоличество уникальных значений(Count Distinctв английской версии). - Отфильтруйте сводную таблицу по нужному условию (например, категория = «Электроника»).
📌 Нюанс: В некоторых версиях Excel опция Количество уникальных значений может отсутствовать. В этом случае используйте Количество и делите результат на количество дубликатов (неточно, но быстро для оценки).
🔹 Когда использовать: Для разовых отчётов или когда нужно показать результаты начальству в наглядном виде.
🔹 Когда не использовать: Если данные часто обновляются или нужно автоматизировать процесс (лучше Power Query).
6. Комбинация УСЛОВНОЕ ФОРМАТИРОВАНИЕ + ФИЛЬТР
Этот метод подходит для визуального контроля уникальных значений перед подсчётом. Он не даёт готового числа, но помогает быстро оценить данные.
Инструкция:
- Выделите столбец с уникальными значениями (например,
A2:A100). - Нажмите
Главная → Условное форматирование → Правила выделения ячеек → Повторяющиеся значения. - Выберите формат для дубликатов (например, красный текст).
- Примените фильтр по условию (например, категория = «Электроника»).
- Вручную посчитайте ячейки без выделения (уникальные) или используйте формулу
=СЧЁТЕСЛИ(диапазон;">0")-СЧЁТЕСЛИ(диапазон_дубликатов;">0").
⚠️ Внимание: Этот способ требует ручного подсчёта и не подходит для больших таблиц. Используйте его только для проверки небольших диапазонов.
7. VBA-макрос для автоматизации
Если вам нужно регулярно считать уникальные значения по сложным условиям, напишите простой макрос на VBA. Это сэкономит время при повторяющихся задачах.
Пример макроса для подсчёта уникальных товаров в категории «Электроника»:
Sub CountUniqueByCondition()
Dim ws As Worksheet
Dim rngData As Range, rngCondition As Range
Dim dict As Object
Dim cell As Range
Dim count As Long
Set ws = ActiveSheet
Set rngData = ws.Range("A2:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row) ' Столбец с товарами
Set rngCondition = ws.Range("B2:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row) ' Столбец с категориями
Set dict = CreateObject("Scripting.Dictionary")
For Each cell In rngData
If rngCondition(cell.Row).Value = "Электроника" Then
dict(cell.Value) = 1 ' Добавляем уникальное значение в словарь
End If
Next cell
count = dict.Count
MsgBox "Количество уникальных товаров в категории 'Электроника': " & count
End Sub
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Запустите макрос нажатием
F5.
✅ Плюсы: работает быстро даже с миллионами строк, можно адаптировать под любые условия.
❌ Минусы: требует знаний VBA, макросы могут быть отключены в настройках безопасности.
FAQ: Ответы на частые вопросы
Можно ли посчитать уникальные значения по нескольким условиям?
Да. Например, в Excel 365 используйте:
=СЧЁТ(УНИК(ФИЛЬТР(A2:A100;(B2:B100="Электроника")*(C2:C100="Москва"))))
Для старых версий комбинируйте СУММПРОИЗВ с несколькими условиями:
=СУММПРОИЗВ(--(ЧАСТОТА(ЕСЛИ((B2:B100="Электроника")*(C2:C100="Москва");СТРОКА(A2:A100)-МИН(СТРОКА(A2:A100))+1);СТРОКА(A2:A100)-МИН(СТРОКА(A2:A100))+1)>0))
Почему функция УНИК возвращает ошибку #ИМЯ?
Ошибка #ИМЯ! означает, что ваша версия Excel не поддерживает динамические массивы. Используйте альтернативные методы из этой статьи или обновите Excel до Microsoft 365.
Как посчитать уникальные значения, игнорируя регистр?
Преобразуйте все значения к одному регистру с помощью ПРОПИСН или СТРОЧН:
=СЧЁТ(УНИК(ФИЛЬТР(ПРОПИСН(A2:A100);B2:B100="Электроника")))
В старых версиях используйте вспомогательный столбец с =ПРОПИСН(A2) и считайте уникальные значения по нему.
Можно ли сделать это в Google Таблицах?
Да, в Google Таблицах работают те же принципы. Используйте:
=COUNTA(UNIQUE(FILTER(A2:A100;B2:B100="Электроника")))
Для формул массивов нажмите Ctrl+Shift+Enter (в Google Таблицах это не обязательно).
Как обновить данные в Power Query после изменений?
Щёлкните правой кнопкой по таблице с результатом и выберите Обновить (Refresh). Чтобы обновление происходило автоматически при открытии файла, настройте параметры в Данные → Обновить все → Свойства соединения.