Как найти похожие цифры в Excel: от простых методов до продвинутых формул

Почему поиск похожих чисел — это не тривиальная задача

На первый взгляд кажется, что найти близкие по значению числа в Microsoft Excel — задача для пары кликов. Но любой, кто хотя бы раз пытался автоматизировать поиск дубликатов с допуском ±5% или выявить аномалии в финансовых отчётах, знает: стандартные функции вроде ПОИСКПОЗ или ВПР здесь бессильны. Проблема в том, что "похожесть" — понятие относительное. Для бухгалтера это может быть разница в 0.1% от суммы сделки, а для инженера — погрешность измерений в ±10 единиц.

В этой статье мы разберём 7 рабочих методов — от визуального выделения цветом до сложных формул массивов, которые справятся даже с миллионными таблицами. Вы узнаете, как:

  • 🔍 Выделять числа, отличающиеся не более чем на заданный процент
  • 📊 Сравнивать данные из разных столбцов с учётом погрешности
  • ⚡ Автоматизировать поиск близких значений без ручного просмотра
  • 📈 Строить динамические отчёты по "похожим" данным

Особое внимание уделим малоизвестной функции ОКРВВЕРХ/ОКРВНИЗ с параметром точности — она спасает, когда нужно сгруппировать числа с плавающей запятой (например, 3.1415 и 3.1416). Все методы протестированы на Excel 2019-2023 и Excel Online, с учётом особенностей Mac-версии.

Метод 1: Условное форматирование для визуального анализа

Самый быстрый способ выявить близкие числа — условное форматирование с формулой. Подходит для таблиц до 10 000 строк, где нужно оперативно оценить распределение данных. Рассмотрим на примере поиска чисел, отличающихся не более чем на 5% от среднего значения в столбце.

Шаги для Excel 365/2021:

  1. Выделите диапазон с числами (например, A2:A100)
  2. Перейдите на вкладку Главная → Условное форматирование → Создать правило
  3. Выберите тип правила Использовать формулу для определения форматируемых ячеек
  4. Введите формулу:
    =ABS(A2-СРЗНАЧ($A$2:$A$100))<=0,05*СРЗНАЧ($A$2:$A$100)
  5. Задайте формат (например, зелёную заливку) и нажмите ОК

Абсолютные ссылки ($A$2:$A$100) зафиксированы правильно|

Функция ABS() учитывает модуль разницы|

Порог 5% (0.05) соответствует вашей задаче|

Формула применена ко всему диапазону, а не к одной ячейке-->

⚠️ Внимание: Если в вашем столбце есть пустые ячейки или текст, добавьте в начало формулы проверку ЕЧИСЛО(A2), иначе правило выдаст ошибку. Для больших таблиц (>50 000 строк) этот метод может тормозить — используйте метод 4 с Power Query.

Метод 2: Функция ВПР с допуском (для сравнения столбцов)

Когда нужно найти похожие числа в двух разных столбцах (например, сравнить цены из прайс-листов разных поставщиков), на помощь придёт комбинация ВПР + АБС. Этот метод работает даже в Excel 2010 и не требует надстроек.

Допустим, у вас есть:

  • 📋 Столбец A — список артикулов поставщика №1 с ценами
  • 📋 Столбец C — артикулы поставщика №2 с ценами
  • 🎯 Задача: найти строки, где разница цен ≤ 100 рублей

Формула для ячейки D2 (проверяет, есть ли в столбце A цена, близкая к C2):

=ЕСЛИ(МИН(АБС($A$2:$A$100-C2))<=100; "Есть совпадение"; "Нет близких")
=ИНДЕКС($A$2:$A$100; ПОИСКПОЗ(МИН(АБС($A$2:$A$100-C2)); АБС($A$2:$A$100-C2); 0))

Вводите её с Ctrl+Shift+Enter в старых версиях Excel.-->

📌 Ключевой вывод: Этот метод подходит для однократного сравнения небольших списков. Для регулярного анализа лучше создать сводную таблицу (метод 5) или использовать Power Query.

Ежедневно|

Несколько раз в неделю|

Редко, но методы пригодятся|

Никогда не делал этого-->

Метод 3: Продвинутые формулы массивов (Excel 365)

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

Сценарий 1: Найти все числа в столбце, отличающиеся от заданного на ±X%

Формула для ячейки B2 (ищет в A2:A100 числа, близкие к 1000 с допуском 5%):

=ФИЛЬТР(A2:A100; АБС(A2:A100-1000)<=1000*0,05; "Нет данных")

Сценарий 2: Сгруппировать числа по "близости" (кластеризация)

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

=УНИК(ОКРВНИЗ(A2:A100/10)*10)

Эта формула создаст список "опорных" значений (10, 20, 30...), к которым можно привязать исходные данные.

Почему ОКРВНИЗ лучше СЦЕПИТЬ для группировки?

Функция ОКРВНИЗ с параметром точности (например, ОКРВНИЗ(число; 10)) округляет до ближайшего кратного 10 вниз, что позволяет стандартизировать группировку. В отличие от СЦЕПИТЬ, который просто объединяет текст, ОКРВНИЗ сохраняет числовой формат для дальнейших вычислений.

⚠️ Внимание: Формулы массивов в Excel 365 автоматически "проливаются" на соседние ячейки. Если ниже есть данные, они будут перезаписаны! Всегда оставляйте достаточно свободного пространства или преобразуйте результат в значения (Ctrl+C → ПКМ → Значения).

Метод 4: Power Query для больших данных (100 000+ строк)

Когда таблица содержит сотни тысяч строк, формулы и условное форматирование становятся неприменимыми — Excel начинает "подвисать". Здесь на помощь придёт Power Query (вкладка Данные → Получить данные). Этот инструмент позволяет:

  • 🔄 Обрабатывать миллионы строк без тормозов
  • 🔧 Гибко настраивать пороги "похожести"
  • 📤 Автоматически обновлять результаты при изменении исходных данных

Пошаговая инструкция для поиска чисел, отличающихся не более чем на 1%:

  1. Выделите исходный диапазон и нажмите Данные → Из таблицы/диапазона
  2. В редакторе Power Query добавьте вычисляемый столбец с формулой:
    [Сравнение] = Number.Round([ВашСтолбец] * 0.99)

    и второй столбец:

    [Сравнение2] = Number.Round([ВашСтолбец] * 1.01)
  3. Объедините таблицу саму с собой (Главная → Объединить запросы) по условию: [Сравнение] <= ДругойСтолбец.ВашСтолбец AND [Сравнение2] >= ДругойСтолбец.ВашСтолбец
  4. Удалите дубликаты и загрузите результат на новый лист
Метод Макс. строк Требуемые навыки Время выполнения (100к строк)
Условное форматирование ~10 000 Базовые 10-30 сек
Формулы массивов ~50 000 Средние 1-5 мин
Power Query 1 000 000+ Продвинутые <1 мин
VBA Неограничено* Эксперт Зависит от кода

* Ограничено только памятью компьютера

Метод 5: Сводные таблицы для анализа распределения

Если вам нужно не просто найти похожие числа, а проанализировать их распределение (например, выявить наиболее частые диапазоны значений), сводные таблицы — идеальный инструмент. Они позволяют:

  • 📊 Группировать числа по диапазонам (например, 0-100, 101-200)
  • 🔎 Быстро находить выбросы и аномалии
  • 📈 Строить гистограммы частот

Алгоритм действий:

  1. Выделите исходные данные и создайте сводную таблицу (Вставка → Сводная таблица)
  2. Перетащите ваш числовой столбец в область Строки
  3. Щёлкните правой кнопкой по любому числу в сводной таблице → Группировка
  4. Задайте начальное значение, конечное и шаг группировки (например, 50)
  5. Добавьте столбец в область Значения с операцией Количество

💡 Полезный совет: Чтобы автоматически выделять группы с наибольшей концентрацией чисел, примените к сводной таблице условное форматирование по правилу "Топ 10 элементов". Это визуально подсветит наиболее "плотные" диапазоны.

Метод 6: VBA для автоматизации (для опытных пользователей)

Когда стандартных инструментов недостаточно (например, нужно еженедельно сравнивать 20 листов с разными допусками), на помощь придёт VBA. Ниже приведён макрос, который ищет в выделенном диапазоне все пары чисел, отличающихся не более чем на заданный процент, и выводит их на новый лист.

Код макроса:

Sub FindSimilarNumbers()

Dim rng As Range, cell1 As Range, cell2 As Range

Dim ws As Worksheet, newWs As Worksheet

Dim diffPercent As Double, val1 As Double, val2 As Double

Dim lastRow As Long

' Задаём допустимый процент различия

diffPercent = InputBox("Введите допустимый процент различия (например, 5 для 5%):", "Поиск похожих чисел", 5) / 100

Set ws = ActiveSheet

Set rng = Selection

lastRow = 2 ' Начинаем вывод результатов со 2 строки

' Создаём новый лист для результатов

On Error Resume Next

Set newWs = ThisWorkbook.Sheets("Похожие числа")

On Error GoTo 0

If newWs Is Nothing Then

Set newWs = ThisWorkbook.Sheets.Add(After:=ws)

newWs.Name = "Похожие числа"

Else

newWs.Cells.Clear

End If

' Заголовки результатов

newWs.Range("A1:D1").Value = Array("Число 1", "Адрес 1", "Число 2", "Адрес 2")

' Поиск похожих чисел

For Each cell1 In rng

If IsNumeric(cell1.Value) Then

val1 = cell1.Value

For Each cell2 In rng

If IsNumeric(cell2.Value) And (cell1.Row <> cell2.Row Or cell1.Column <> cell2.Column) Then

val2 = cell2.Value

If Abs(val1 - val2) <= Abs(val1 * diffPercent) Then

newWs.Cells(lastRow, 1).Value = val1

newWs.Cells(lastRow, 2).Value = cell1.Address

newWs.Cells(lastRow, 3).Value = val2

newWs.Cells(lastRow, 4).Value = cell2.Address

lastRow = lastRow + 1

End If

End If

Next cell2

End If

Next cell1

' Форматирование результатов

newWs.Columns("A:D").AutoFit

newWs.Range("A1:D1").Font.Bold = True

MsgBox "Поиск завершён! Найдено " & lastRow - 2 & " пар похожих чисел.", vbInformation

End Sub

⚠️ Внимание: Этот макрос имеет квадратичную сложность — при анализе 10 000 ячеек он выполнит ~50 миллионов сравнений! Для больших диапазонов оптимизируйте код (например, предварительно сортируйте данные или используйте Dictionary для хэширования).

Метод 7: Функция ПОИСКПОЗ с приблизительным совпадением

Мало кто знает, что стандартная функция ПОИСКПОЗ умеет искать приблизительные совпадения, если задать четвёртый параметр равным 1 или -1. Этот метод полезен для:

  • 📉 Поиска ближайшего меньшего/большего значения в отсортированном списке
  • 📊 Привязки данных к дискретным шкалам (например, возрастные группы)
  • 🔍 Быстрого определения интервала, в который попадает число

Пример: найдём в отсортированном по возрастанию столбце A2:A100 позицию числа, наиболее близкого к 50 (но не превышающего его):

=ПОИСКПОЗ(50; A2:A100; 1)

Чтобы получить само близкое значение (а не его позицию), оберните формулу в ИНДЕКС:

=ИНДЕКС(A2:A100; ПОИСКПОЗ(50; A2:A100; 1))
Как работает приблизительный поиск?

При четвёртом параметре 1 функция ищет наибольшее значение, не превышающее искомое. Например, в массиве {10, 20, 30, 40, 50} поиск ПОИСКПОЗ(35; массив; 1) вернёт позицию числа 30. Это полезно для налоговых ставок, скидок по порогам и других "ступенчатых" шкал.

📌 Ключевой вывод: Метод работает только с отсортированными данными! Если ваш столбец не отсортирован, сначала примените СОРТExcel 365) или используйте ДАННЫЕ → Сортировка.

FAQ: Ответы на частые вопросы

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

Да, но с оговорками:

  1. Если книги открыты одновременно, используйте ссылки на внешние данные (например, =ВПР(A2; [Книга2.xlsx]Лист1!$A$2:$B$100; 2; ЛОЖЬ))
  2. Для закрытых книг потребуется Power Query или VBA, так как Excel не обновляет ссылки на закрытые файлы
  3. В Excel Online внешние ссылки работают только если обе книги хранятся в OneDrive/SharePoint

⚠️ Внимание: При изменении пути к внешней книге все формулы сломаются! Используйте ИМЯ.ДИАПАЗОНА для надёжных ссылок.

Как найти похожие числа с учётом округления (например, 3.14 ≈ 3.1415)?

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

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

Для автоматизации в Excel 365 подойдёт формула:

=ФИЛЬТР(A2:A100; СЧЁТЕСЛИ(ОКРУГЛ(A2:A100; 2); ОКРУГЛ(A2:A100; 2))>1)
Почему условное форматирование не работает с моими данными?

Частые причины и решения:

  • 🔢 Ячейки хранят текст, а не числа: Проверьте выравнивание (числа выровнены по правому краю). Исправьте с помощью ТЕКСТ.В.ЧИСЛО() или ЗНАЧЕН()
  • 🔄 Формула с абсолютными ссылками: Убедитесь, что диапазон в формуле зафиксирован (например, $A$2:$A$100, а не A2:A100)
  • 🚫 Ошибки в данных: Добавьте в формулу проверку ЕОШИБКА() или ЕЧИСЛО()
  • 🎨 Конфликт правил: Проверьте порядок правил в менеджере условного форматирования (последние правила имеют приоритет)
Как экспортировать результаты поиска похожих чисел в отдельный файл?

Способы в зависимости от метода:

  • 📋 Условное форматирование: Отфильтруйте выделенные ячейки по цвету (Данные → Фильтр → Фильтр по цвету ячейки), скопируйте видимые строки в новую книгу
  • 🔍 Power Query: После обработки нажмите Главная → Закрыть и загрузить в... и выберите "Новая книга"
  • 📊 Сводная таблица: Скопируйте данные сводной таблицы на новый лист и сохраните как отдельный файл (Файл → Сохранить как)
  • 🤖 VBA: Модифицируйте макрос из Метода 6, добавив строку newWs.Copy: newWs.SaveAs "Путь\к\файлу.xlsx"
Можно ли искать похожие числа в Google Таблицах?

Да, большинство методов переносятся на Google Sheets с минимальными изменениями:

  • 🔍 Условное форматирование: Формулы идентичны, но синтаксис функций на английском (=ABS(A2-AVERAGE($A$2:$A$100))<=0.05*AVERAGE($A$2:$A$100))
  • 📊 QUERY вместо Power Query: Используйте =QUERY(A2:B100; "SELECT A WHERE ABS(A - " & C2 & ") <= 10"; 1)
  • 🤖 Apps Script вместо VBA: Аналог макросов, но на JavaScript

⚠️ Внимание: В Google Sheets нет функции ОКРВВЕРХ — используйте =ROUNDUP(A2/10)*10 для округления до 10.