Как посчитать фамилии в Excel: формулы, фильтры и автоматизация

Подсчёт фамилий в Microsoft Excel или Google Таблицах — задача, с которой сталкиваются HR-специалисты, учителя, исследователи и аналитики. Казалось бы, что может быть проще: выбрал столбец с фамилиями и посчитал строки. Но на практике всё сложнее: повторяющиеся фамилии, опечатки, разный регистр («Иванов» vs «иванов»), пробелы или лишние символы нарушают точный подсчёт. Эта статья поможет разобраться, как корректно посчитать уникальные фамилии, выявить дубликаты и даже автоматизировать процесс для больших баз данных.

Мы рассмотрим методы разной сложности: от базовых функций СЧЁТЕСЛИ до массивов и Power Query. Особое внимание уделим типичным ошибкам — например, когда Excel «не видит» одинаковые фамилии из-за скрытых пробелов или невидимых символов. Готовые формулы и шаблоны в конце статьи сэкономят вам часы ручной работы.

Если вы работаете с большими списками (от 10 000 строк), важно понимать: неправильный подсчёт фамилий может исказить статистику. Например, при анализе успеваемости учеников или распределении премий сотрудникам. Даже одна лишняя фамилия в отчёте способна привести к ошибкам в расчётах. Поэтому давайте разберёмся, как сделать это точно и быстро.

📊 С какой целью вы чаще всего считаете фамилии в Excel?
Для отчётности
Анализ данных
Поиск дубликатов
Другое

1. Базовый подсчёт: функция СЧЁТ и её ограничения

Самый простой способ — использовать функцию СЧЁТ (или COUNT в английской версии). Она подсчитывает количество ячеек с числовыми данными в выбранном диапазоне. Но для фамилий (текстовых данных) этот метод не подходит напрямую. Почему?

Функция СЧЁТ игнорирует текстовые значения, поэтому для столбца с фамилиями она всегда вернёт 0. Чтобы посчитать количество заполненных ячеек с фамилиями, используйте:

=СЧЁТЗ(stolbec)

где stolbec — диапазон с фамилиями (например, A2:A100). Эта функция учитывает все непустые ячейки, включая текст.

Однако СЧЁТЗ не различает уникальные и повторяющиеся фамилии. Если в списке 100 строк, из них 20 — фамилия «Петров», функция вернёт 100, а не количество уникальных фамилий. Для этого нужны другие инструменты.

⚠️ Внимание: Если в данных есть пустые ячейки или ячейки с формулами, возвращающими пустое значение (""), СЧЁТЗ их проигнорирует. Чтобы учесть и такие случаи, комбинируйте её с СЧИТАТЬПУСТОТЫ.
  • ✅ Подходит для: быстрого подсчёта общего количества записей.
  • ❌ Не подходит для: уникальных фамилий, анализа повторов.
  • 🔍 Альтернатива: СЧИТАТЬПУСТОТЫ для пустых ячеек.

2. Подсчёт уникальных фамилий: ЧАСТОТА + ДСЧЁТ

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

  1. Скопируйте столбец с фамилиями в соседний диапазон (например, из A2:A100 в B2:B100).
  2. Удалите дубликаты: выделите скопированный диапазон → Данные → Удалить дубликаты.
  3. Подсчитайте количество оставшихся строк: =СЧЁТЗ(B2:B100).

Для автоматизации без копирования используйте формулу массива (вводится через Ctrl+Shift+Enter в Excel 2019 и старше):

=СУММ(--(ЧАСТОТА(ПОИСКПОЗ(A2:A100;A2:A100;0);ПОИСКПОЗ(A2:A100;A2:A100;0))>0))

Эта формула возвращает количество уникальных значений в диапазоне A2:A100.

В Google Таблицах и Excel 365 проще использовать УНИК (или UNIQUE):

=СЧЁТ(УНИК(A2:A100))
⚠️ Внимание: Формулы массива могут замедлять работу Excel при обработке более 50 000 строк. Для больших данных используйте Power Query (см. раздел 6).

Удалить лишние пробелы функцией СЖПРОБЕЛЫ

Привести регистр к единому виду (ПРОПИСН или СТРОЧН)

Проверить на скрытые символы (неразрывные пробелы, табуляции)

Отсортировать данные для визуального контроля-->

3. Как посчитать повторяющиеся фамилии: СЧЁТЕСЛИ и условное форматирование

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

=СЧЁТЕСЛИ($A$2:$A$100; A2)

Чтобы автоматически выделить дубликаты, примените условное форматирование:

  1. Выделите диапазон с фамилиями.
  2. Перейдите в Главная → Условное форматирование → Правила выделения ячеек → Повторяющиеся значения.
  3. Выберите формат (например, красный текст) и нажмите ОК.

Для анализа частоты встречаемости фамилий создайте сводную таблицу:

  1. Выделите диапазон с фамилиями.
  2. Нажмите Вставка → Сводная таблица.
  3. Перетащите поле с фамилиями в область Строки и Значения (Excel автоматически посчитает количество).
ФамилияКоличествоПримечание
Иванов12Самая частая фамилия
Петров8Включает варианты "Петров-" (дефис)
Сидоров5
Кузнецов3Есть опечатка "Кузнецов" (1 случай)

Критическая ошибка: если в данных есть фамилии с дефисами ("Петров-Смирнов") или двойные фамилии, СЧЁТЕСЛИ посчитает их отдельно от "Петров". Используйте подстановочные знаки (Петров) для частичного совпадения.

4. Проблемы с регистром и пробелами: как их обойти

Excel воспринимает «Иванов» и «иванов» как разные значения. Чтобы этого избежать, приведите все фамилии к единому регистру с помощью функций:

  • ПРОПИСН — всё заглавными (=ПРОПИСН(A2)),
  • СТРОЧН — всё строчными (=СТРОЧН(A2)),
  • ПРОПНАЧ — первая буква заглавная (=ПРОПНАЧ(A2)).

Для удаления лишних пробелов используйте СЖПРОБЕЛЫ:

=СЖПРОБЕЛЫ(A2)

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

Если в данных есть неразрывные пробелы (вставляются через Ctrl+Shift+Пробел), замените их обычными:

=ПОДСТАВИТЬ(A2; СИМВОЛ(160); " ")

где СИМВОЛ(160) — код неразрывного пробела.

5. Продвинутые методы: Power Query и VBA

Для обработки больших массивов данных (от 50 000 строк) ручные формулы становятся неэффективными. В таких случаях используйте Power Query (в Excel 2016 и новее):

  1. Выделите диапазон с фамилиями.
  2. Перейдите в Данные → Получить данные → Из таблицы/диапазона.
  3. В редакторе Power Query выберите столбец с фамилиями → Главная → Группировка.
  4. Укажите операцию Количество значений и нажмите ОК.
  5. Нажмите Главная → Закрыть и загрузить.

Результат — таблица с уникальными фамилиями и их количеством. Преимущества Power Query:

  • ⚡ Обрабатывает миллионы строк без замедления.
  • 🔄 Автоматически обновляет данные при изменении исходного списка.
  • 🛠️ Позволяет чистить данные (удалять пробелы, исправлять регистр) на этапе загрузки.

Для полной автоматизации напишите макрос на VBA:

Sub CountSurnames()

Dim rng As Range, dict As Object

Set dict = CreateObject("Scripting.Dictionary")

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

For Each cell In rng

key = Trim(UCase(cell.Value))

If dict.exists(key) Then

dict(key) = dict(key) + 1

Else

dict.Add key, 1

End If

Next cell

' Вывод результата в столбец B

Range("B2").Resize(dict.Count, 1).Value = Application.Transpose(dict.keys)

Range("C2").Resize(dict.Count, 1).Value = Application.Transpose(dict.items)

End Sub

Этот код создаёт словарь уникальных фамилий (в верхнем регистре, без пробелов) и выводит результат в столбцы B и C.

Как запустить макрос в Excel?

1. Нажмите Alt+F11 для открытия редактора VBA.

2. Вставьте код в новый модуль (Insert → Module).

3. Закройте редактор и вернитесь в Excel.

4. Нажмите Alt+F8, выберите макрос CountSurnames и нажмите Выполнить.

6. Анализ фамилий с ошибками: поиск опечаток и вариантов написания

Частая проблема — опечатки в фамилиях (например, «Кузнецов» vs «Кузнецов»). Чтобы их выявить, используйте нечёткое сравнение с помощью функции РАССТОЯНИЕ (или LEVENSHTEIN в надстройках). Эта функция calculates расстояние Левенштейна — количество изменений (замен, удалений, вставок), необходимых для преобразования одной строки в другую.

Пример: чтобы найти фамилии, отличающиеся на 1 символ:

=ЕСЛИ(МИН(ЕСЛИ($A$2:$A$100<>A2; РАССТОЯНИЕ(A2; $A$2:$A$100))) <= 1; "Возможная опечатка"; "")

Эта формула массива вернёт «Возможная опечатка» для фамилий, у которых есть похожие варианты в списке.

Для визуализации используйте условное форматирование с пользовательской формулой:

=СУММПРОИЗВ(--(РАССТОЯНИЕ(A2; $A$2:$A$100) <= 1)) > 1
⚠️ Внимание: Функция РАССТОЯНИЕ отсутствует в стандартном Excel. Установите надстройку Morefunc или используйте VBA-функцию:
Function Levenshtein(s1 As String, s2 As String) As Integer

' Код функции (можно найти в открытых источниках)

End Function

7. Экспорт результатов и визуализация

После подсчёта фамилий полезно визуализировать данные. Например, построить диаграмму распределения фамилий по частоте:

  1. Создайте сводную таблицу (как в разделе 3).
  2. Отсортируйте данные по убыванию количества.
  3. Выделите диапазон с фамилиями и их количеством.
  4. Нажмите Вставка → Вставить гистограмму.

Для экспорта результатов в отдельный файл:

  • Скопируйте таблицу с уникальными фамилиями.
  • Создайте новый лист и вставьте данные как Значения (Правка → Специальная вставка → Значения).
  • Сохраните файл как CSV (Файл → Сохранить как → CSV).

Если нужно отправить отчёт по почте, используйте Overleaf для автоматической рассылки:

=ГИПЕРССЫЛКА("mailto:example@mail.com?subject=Отчёт по фамилиям&body=Прикрепляю файл с анализом фамилий"; "Отправить отчёт")

FAQ: Частые вопросы о подсчёте фамилий в Excel

Как посчитать фамилии, начинающиеся на определённую букву?

Используйте функцию СЧЁТЕСЛИ с подстановочным знаком:

=СЧЁТЕСЛИ(A2:A100; "И*")

Эта формула посчитает все фамилии, начинающиеся на «И» (например, «Иванов», «Игнатова»).

Можно ли посчитать фамилии с учётом отчеств (например, "Иванов Иван Иванович")?

Да, но сначала выделите фамилию из полного ФИО. Например, если ФИО записано как «Фамилия Имя Отчество», используйте:

=ЛЕВСИМВ(A2; ПОИСК(" "; A2) - 1)

Затем применяйте СЧЁТЕСЛИ к результату.

Как автоматически обновлять подсчёт при добавлении новых фамилий?

Преобразуйте диапазон с фамилиями в умную таблицу (Ctrl+T). Затем используйте СЧЁТЕСЛИ со структурированными ссылками:

=СЧЁТЕСЛИ(Таблица1[Фамилия]; "Иванов")

При добавлении новых строк в таблицу формулы обновятся автоматически.

Что делать, если в списке есть пустые ячейки или ячейки с формулами?

Используйте комбинацию ЕСЛИ и СЧЁТЕСЛИ:

=СЧЁТЕСЛИ(A2:A100; "Иванов") + СЧЁТЕСЛИ(A2:A100; "")

Или замените пустые ячейки на нули:

=ЕСЛИ(A2=""; 0; СЧЁТЕСЛИ($A$2:$A$100; A2))
Как посчитать фамилии в Google Таблицах?

В Google Таблицах доступны те же функции, но с некоторыми особенностями:

  • Для уникальных фамилий: =COUNTA(UNIQUE(A2:A100)).
  • Для подсчёта повторов: =COUNTIF(A2:A100; A2).
  • Для нечёткого сравнения установите надстройку Fuzzy Match.