Как посчитать количество уникальных строк в Excel: от формул до Power Query

Работа с большими таблицами в Microsoft Excel часто требует анализа уникальных записей. Например, вам нужно узнать, сколько разных клиентов сделали заказы, сколько уникальных товаров числится в прайс-листе или сколько оригинальных комбинаций параметров содержит ваша база. Вручную перебирать тысячи строк — не вариант. К счастью, в Excel есть несколько способов автоматизировать этот процесс, и мы разберём их от простого к сложному.

Многие пользователи ошибочно думают, что достаточно применить функцию СЧЁТЕСЛИ или УНИК — но эти инструменты работают только с отдельными ячейками, а не со строками целиком. Подсчёт уникальных строк требует учёта всех столбцов одновременно, иначе результат будет неточным. В этой статье вы найдёте решения для разных версий Excel (включая Excel 365 и Excel 2019), а также альтернативные методы для обработки больших массивов данных.

Мы рассмотрим:

  • 🔹 Базовые формулы для небольших таблиц (до 10 000 строк)
  • 🔹 Продвинутые комбинации функций для сложных условий
  • 🔹 Использование Power Query — самого мощного инструмента для работы с уникальными данными
  • 🔹 Обработку дубликатов с учётом регистра и пробелов

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

1. Простой способ: функция СЧЁТЕСЛИМН для небольших таблиц

Начнём с самого доступного метода, который работает во всех версиях Excel — комбинации функций СЧЁТЕСЛИМН и СУММПРОИЗВ. Этот подход подходит для таблиц до 10 000 строк и не требует знания сложных формул.

Предположим, у вас есть таблица с данными о заказах, где каждая строка содержит уникальную комбинацию "Клиент + Товар + Дата". Чтобы посчитать количество уникальных строк, выполните следующие шаги:

  1. Добавьте справа от таблицы вспомогательный столбец с формулой, которая объединяет все ячейки строки в одну текстовую строку. Например, если данные в столбцах A:D, в ячейке E2 введите:
    =A2&"|"&B2&"|"&C2&"|"&D2
    Символ "|" здесь используется как разделитель, чтобы избежать совпадений (например, "Иванов123" и "Иванов123" из разных ячеек не должны считаться одинаковыми).
  2. Скопируйте формулу на все строки таблицы.
  3. В любой свободной ячейке (например, G1) введите формулу для подсчёта уникальных значений во вспомогательном столбце:
    =СУММПРОИЗВ(1/СЧЁТЕСЛИ(E:E;E:E))
    Важно: это формула массива, поэтому в старых версиях Excel (до 2019) её нужно вводить с помощью Ctrl+Shift+Enter.

Результат — количество уникальных строк в вашей таблице. Минус этого метода в том, что он не учитывает пустые ячейки и может давать сбои, если в данных есть символ "|". Также формула тормозит на больших массивах (свыше 20 000 строк).

📊 Как часто вам нужно считать уникальные строки в Excel?
Ежедневно
Несколько раз в неделю
Редко, но методы пригодятся
Никогда не сталкивался

2. Продвинутый метод: функция УНИК в Excel 365 и 2021

Если вы используете Microsoft 365 или Excel 2021, у вас есть доступ к современным функциям, которые упрощают работу с уникальными данными. Функция УНИК специально предназначена для извлечения уникальных значений, а в паре с СТРОКА или ЧСТРОК она позволяет быстро посчитать уникальные строки.

Вот как это работает на практике:

  1. Выделите диапазон, где хотите вывести уникальные строки (например, F2:I100 — если исходная таблица в A2:D100).
  2. Введите формулу:
    =УНИК(A2:D100;ЛОЖЬ;ИСТИНА)
    • 🔹 ЛОЖЬ — возвращает только уникальные строки (без повторов).
    • 🔹 ИСТИНА — учитывает все столбцы (если поставить ЛОЖЬ, будет сравнивать только первый столбец).
  • В любой ячейке подсчитайте количество строк в результате:
    =ЧСТРОК(F2#)
    Символ # здесь указывает на "динамический массив" — область, автоматически заполненную функцией УНИК.
  • Это самый надёжный способ для современных версий Excel, так как функция УНИК автоматически обновляется при изменении исходных данных и работает даже с миллионом строк. Однако у неё есть ограничение: она не учитывает регистр символов (например, "Иванов" и "иванов" будут считаться одинаковыми). Если это критично, используйте метод с Power Query (раздел 4).

    3. Подсчёт уникальных строк с условиями (СЧЁТЕСЛИМН + УСЛОВИЯ)

    Часто требуется посчитать уникальные строки не во всей таблице, а только среди тех, которые удовлетворяют определённым критериям. Например, количество уникальных клиентов, сделавших заказ на сумму больше 10 000 рублей. Для этого комбинируем СЧЁТЕСЛИМН с дополнительными условиями.

    Рассмотрим пример:

    • 📌 Исходная таблица: A2:D100 (Клиент, Товар, Дата, Сумма).
    • 📌 Нужно посчитать уникальных клиентов, которые заказали товар "Ноутбук" на сумму > 15 000.

    Решение:

    1. Создайте вспомогательный столбец (например, E) с формулой объединения ключевых полей (как в разделе 1), но добавьте проверку условия:
      =ЕСЛИ(И(B2="Ноутбук"; D2>15000); A2&"|"&B2; "")

      Эта формула заполнит ячейку только если выполняются оба условия.

    2. В любой свободной ячейке используйте формулу для подсчёта уникальных значений во вспомогательном столбце:
      =СУММПРОИЗВ(1/СЧЁТЕСЛИ(E:E;E:E&""))
      Добавление &"" нужно, чтобы игнорировать пустые ячейки.

    Этот метод универсален, но требует аккуратности при настройке условий. Если условий много (например, 3-4 параметра), лучше использовать Power Query — он справится с такой задачей проще.

    Данные отсортированы по ключевому столбцу (например, по клиенту)|

    Вспомогательный столбец не содержит ошибок #Н/Д или #ЗНАЧ!|

    Условия в формуле покрывают все необходимые критерии|

    Проверены крайние случаи (пустые ячейки, нулевые значения)-->

    4. Power Query: обработка больших данных без формул

    Если ваша таблица содержит десятки тысяч строк или вам нужно регулярно обновлять подсчёт уникальных записей, Power Query (встроенный инструмент в Excel 2016+) станет лучшим решением. Он не только быстрее обрабатывает данные, но и позволяет:

    • 🔹 Учитывать регистр символов (в отличие от функции УНИК).
    • 🔹 Работать с несколькими листами или внешними источниками (например, CSV, SQL).
    • 🔹 Автоматически обновлять результаты при изменении исходных данных.

    Пошаговая инструкция:

    1. Выделите исходную таблицу и перейдите на вкладку ДанныеИз таблицы/диапазона (или Get Data → From Table/Range в английской версии).
    2. В открывшемся редакторе Power Query выделите все столбцы, которые должны участвовать в проверке уникальности (например, Клиент, Товар, Дата).
    3. На вкладке Главная (Home) нажмите Группировка (Group By) и выберите операцию Счёт (Count). В результате вы получите таблицу с уникальными комбинациями и их количеством.
    4. Чтобы просто посчитать количество уникальных строк, после группировки добавьте новый столбец с формулой = Table.RowCount(#"Группированные строки").
    5. Нажмите Закрыть и загрузить (Close & Load), чтобы вернуть результат в Excel.

    Power Query также позволяет сохранять шаги обработки и повторно их применять. Например, если вам ежемесячно нужно обновлять отчёт по уникальным клиентам, достаточно нажать "Обновить" — и все вычисления выполнятся автоматически.

    Как учитывать регистр в Power Query?

    По умолчанию Power Query игнорирует регистр при сравнении строк. Чтобы это исправить:

    1. Выделите столбцы для проверки уникальности.

    2. Перейдите на вкладку "Преобразование" (Transform).

    3. Выберите "Формат → Заменить регистр → Как есть" (Format → Trim → Clean не поможет, нужно использовать язык M).

    4. В редакторе продвинутых запросов добавьте строку:

    = Table.Distinct(Table.TransformColumns(#"Предыдущий шаг", {{"Столбец1", each Text.Upper(_), type text}}))

    Это преобразует все значения к верхнему регистру перед сравнением.

    5. Ошибки и нюансы: почему формулы дают неверный результат

    Даже опытные пользователи Excel сталкиваются с ситуациями, когда подсчёт уникальных строк работает некорректно. Рассмотрим типичные причины и способы их устранения:

    Проблема 1: Формула возвращает #ДЕЛ/0! или #ЗНАЧ!

    • 🔸 Причина: В вспомогательном столбце есть пустые ячейки или ошибки. Например, если в формуле объединения (=A2&"|"&B2) одна из ячеек содержит #Н/Д, результат тоже будет ошибочным.
    • 🔸 Решение: Используйте функцию ЕСЛИОШИБКА:
      =ЕСЛИОШИБКА(A2&"|"&B2; "")

      Или проверьте данные на наличие ошибок с помощью Проверка ошибок на вкладке Формулы.

    Проблема 2: Дубликаты не обнаруживаются, хотя они есть

    • 🔸 Причина: В данных есть скрытые символы (пробелы, неразрывные пробелы, переносы строк) или разный регистр. Например, "Иванов" и " Иванов " (с пробелом в конце) будут считаться разными строками.
    • 🔸 Решение: Очистите данные с помощью СЖПРОБЕЛЫ и ПЕЧСИМВ:
      =СЖПРОБЕЛЫ(ПЕЧСИМВ(A2))

      Или используйте Power Query с опцией Trim (обрезка пробелов).

    Проблема 3: Формула тормозит или не обновляется

    • 🔸 Причина: В таблице больше 50 000 строк, и Excel не справляется с вычислениями. Или включён ручной режим пересчёта (Формулы → Параметры вычислений → Вручную).
    • 🔸 Решение: Переключитесь на Power Query или разбейте данные на части. Для ускорения также можно отключить автоматический пересчёт на время работы с формулами.

    6. Альтернативные инструменты: надстройки и VBA

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

    Надстройки для Excel

    • 📌 Kutools for Excel: содержит инструмент Select Duplicate & Unique Cells, который умеет выделять и считать уникальные строки с учётом выбранных столбцов. Подходит для пользователей, которые не хотят разбираться в формулах.
    • 📌 Ablebits: предлагает функцию Count unique rows с гибкими настройками (например, игнорирование пустых ячеек).
    ⚠️ Внимание: Перед установкой надстроек проверьте их совместимость с вашей версией Excel. Некоторые инструменты могут конфликтовать с Power Query или макросами.

    Макросы на VBA

    Для автоматизации подсчёта уникальных строк можно написать простой макрос. Например, этот код считает уникальные строки в диапазоне A2:D100 и выводит результат в сообщении:

    Sub CountUniqueRows()
    

    Dim rng As Range, dict As Object

    Dim cell As Range, key As String

    Dim i As Long, lastRow As Long

    Set dict = CreateObject("Scripting.Dictionary")

    Set rng = Range("A2:D" & Cells(Rows.Count, "A").End(xlUp).Row)

    For Each cell In rng.Rows

    key = ""

    For i = 1 To rng.Columns.Count

    key = key & "|" & cell.Cells(1, i).Value

    Next i

    dict(key) = 1

    Next cell

    MsgBox "Количество уникальных строк: " & dict.Count

    End Sub

    Чтобы использовать этот макрос:

    1. Нажмите Alt + F11, чтобы открыть редактор VBA.
    2. Вставьте код в новый модуль (Insert → Module).
    3. Запустите макрос на выполнение (F5).

    VBA позволяет гибко настраивать логику подсчёта (например, игнорировать определённые столбцы или учитывать только строки с заданным условием). Однако для новичков этот метод может показаться сложным — в таком случае лучше остановиться на Power Query.

    Сравнение методов: какой выбрать?

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

    Метод Макс. количество строк Учитывает регистр Работает с условиями Автообновление Сложность
    СЧЁТЕСЛИМН + СУММПРОИЗВ до 20 000 Нет Да Нет Низкая
    УНИК (Excel 365) 1 000 000+ Нет Нет Да Средняя
    Power Query 1 000 000+ Да (с настройкой) Да Да Высокая
    VBA 1 000 000+ Да Да Да (привязка к событию) Очень высокая
    Надстройки (Kutools) 50 000+ Да Да Да Низкая

    Для большинства задач оптимальным решением будет Power Query — он сочетает гибкость, производительность и возможность автоматического обновления. Если вам нужна простота и данные не превышают 10 000 строк, подойдёт метод с СЧЁТЕСЛИМН. Для одноразовых задач в Excel 365 удобнее всего функция УНИК.

    FAQ: Частые вопросы о подсчёте уникальных строк

    Можно ли посчитать уникальные строки без вспомогательных столбцов?

    Да, но только в Excel 365 с помощью функции УНИК или в Power Query. В старых версиях вспомогательный столбец обязателен для объединения данных из нескольких ячеек в одну строку.

    Почему функция УНИК не показывает все уникальные строки?

    Вероятные причины:

    • 🔹 В диапазоне есть скрытые строки или фильтры (снимите фильтрацию).
    • 🔹 Формула не охватывает все нужные столбцы (проверьте третий аргумент функции — он должен быть ИСТИНА).
    • 🔹 В данных есть ошибки #Н/Д, которые функция игнорирует.

    Как посчитать уникальные строки в Google Таблицах?

    В Google Sheets используйте аналогичные методы:

    • 🔹 Для небольших таблиц: =SUMPRODUCT(1/COUNTIF(E:E; E:E)) (где E:E — вспомогательный столбец).
    • 🔹 Для современных версий: =COUNTA(UNIQUE(A2:D100)).

    Google Таблицы также поддерживают Power Query (через Данные → Power Tools), но функционал ограничен по сравнению с Excel.

    Можно ли посчитать уникальные строки с учётом частичного совпадения?

    Да, но это требует дополнительной обработки. Например, если нужно считать уникальных клиентов по первым трём буквам фамилии:

    1. Создайте вспомогательный столбец с формулой =ЛЕВСИМВ(A2; 3) (берёт первые 3 символа).
    2. Примените СЧЁТЕСЛИМН или УНИК к этому столбцу.

    Для более сложных условий (например, поиск по шаблону) используйте Power Query с функцией Text.StartsWith или VBA.

    Как ускорить подсчёт уникальных строк в больших таблицах?

    Советы для работы с данными от 100 000 строк:

    • 🔹 Преобразуйте диапазон в умную таблицу (Ctrl + T) — это ускорит вычисления.
    • 🔹 Используйте Power Query вместо формул — он оптимизирован для больших объёмов.
    • 🔹 Если возможен, разбейте данные на несколько файлов и обрабатывайте их по отдельности.
    • 🔹 Отключите автоматический пересчёт формул (Формулы → Параметры вычислений → Вручную) на время работы.