Работа с большими массивами данных в Microsoft Excel часто требует выделения конкретных типов информации — например, только числовых значений. Возможно, вам нужно посчитать количество ячеек с числами, извлечь их для дальнейшего анализа или просто визуально выделить на фоне текста. В этой статье мы разберём 7 способов, как найти все числа в Excel — от базовых инструментов до продвинутых техник с использованием формул и макросов.
Проблема поиска чисел усложняется, когда данные смешаны: в одной колонке могут быть текст, даты, проценты и числа в разных форматах. Стандартный поиск по Ctrl+F здесь не поможет — он ищет конкретные значения, а не типы данных. Мы покажем, как обойти это ограничение с помощью фильтров, условного форматирования, функций ЕЧИСЛО и даже Power Query. А для автоматизации рутинных задач приведем готовые VBA-скрипты.
Неважно, используете вы Excel 2016, Excel 365 или Excel для Mac — все методы из этой статьи работают во всех современных версиях программы. Начнём с самых простых решений и постепенно перейдём к продвинутым техникам.
1. Поиск чисел через фильтр: быстрый способ для небольших таблиц
Если ваша таблица не превышает нескольких тысяч строк, самый простой способ найти числа — использовать автофильтр. Этот метод не требует знания формул и занимает меньше минуты.
Вот как это работает:
- 📌 Выделите диапазон данных (включая заголовки столбцов).
- 🔍 Перейдите на вкладку
Данные→ нажмитеФильтр(или используйте горячие клавишиCtrl+Shift+L). - 📊 В выпадающем списке столбца выберите
Числовые фильтры→Равно...илиБольше...(любой числовой критерий). - 🔢 В поле значения введите
0(или любое другое число), но вместо нажатияОКпросто посмотрите на результат фильтрации — Excel автоматически покажет все ячейки с числами в этом столбце.
Этот метод подходит для визуального анализа, но имеет ограничения:
- ❌ Не работает, если числа хранятся как текст (например, после импорта из CSV).
- ❌ Не позволяет сразу выделить или скопировать все найденные числа.
- ❌ Фильтрует только по одному столбцу за раз.
⚠️ Внимание: Если после применения фильтра числа не отображаются, проверьте формат ячеек. Числа, отформатированные как текст (с зелёным треугольником в углу), не будут распознаны как числовые данные. Исправьте это через Главная → Формат → Формат ячеек → Числовой.
2. Условное форматирование: визуальное выделение чисел
Если вам нужно выделить все числа в таблице цветом, чтобы они бросались в глаза, используйте условное форматирование. Этот метод работает даже для ячеек, где числа хранятся как текст (например, после импорта из внешних источников).
Инструкция:
- Выделите диапазон данных (например,
A1:Z1000). - Перейдите на вкладку
Главная→Условное форматирование→Создать правило. - В окне правила выберите
Использовать формулу для определения форматируемых ячеек. - Введите формулу:
=ЕЧИСЛО(A1)(где
A1— первая ячейка выделенного диапазона; Excel автоматически скорректирует адресацию для остальных ячеек). - Нажмите
Формат, выберите цвет заливки (например, жёлтый) и нажмитеОК.
Результат: все ячейки с числами будут подсвечены. Этот метод удобен для визуального контроля больших таблиц, где числа «теряются» среди текста.
Убедитесь, что в диапазоне нет пустых строк
Проверьте формат ячеек (числа не должны быть текстом)
Выберите контрастный цвет заливки (например, светло-зелёный)
Примените правило ко всему листу, если данные разбросаны-->
Если числа хранятся как текст, используйте модифицированную формулу:
=ЕОШИБКА(ЗНАЧЕН(A1))=ЛОЖЬ
Она преобразует текстовые числа в числовой формат и проверяет успешность операции.
3. Функция ЕЧИСЛО и её применение в формулах
Функция ЕЧИСЛО — это основной инструмент для проверки, является ли содержимое ячейки числом. Она возвращает ИСТИНА, если ячейка содержит число, и ЛОЖЬ в противном случае. Её можно использовать как самостоятельно, так и в комбинации с другими функциями.
Примеры применения:
| Задача | Формула | Пример результата |
|---|---|---|
| Проверить, является ли ячейка числом | =ЕЧИСЛО(A1) |
ИСТИНА (если в A1 число 10) |
| Посчитать количество чисел в диапазоне | =СЧЁТЕСЛИ(A1:A100; "<>"&"") или =СУММПРОИЗВ(--ЕЧИСЛО(A1:A100)) |
42 (если в диапазоне 42 числа) |
| Суммировать только числовые ячейки | =СУММЕСЛИ(A1:A100; "<>"&""; B1:B100) или =СУММПРОИЗВ(B1:B100; --ЕЧИСЛО(A1:A100)) |
1500 (сумма чисел из столбца B, где в A — числа) |
| Извлечь числа из текстовой строки | =--ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; "а"; ""); "б"; ""); ...) (удалить все буквы) |
12345 (из строки "abc12345def") |
Для извлечения чисел из текстовых строк (например, "Заказ №12345") используйте комбинацию функций ПОДСТАВИТЬ, ПСТР и НАЙТИ. Однако для больших объёмов данных лучше использовать Power Query (см. раздел 5).
⚠️ Внимание: ФункцияЕЧИСЛОвозвращаетИСТИНАдаже для дат и времени, так как в Excel они хранятся как числа. Чтобы исключить даты, комбинируйте её сЕДАТАилиЕВРЕМЯ:=И(ЕЧИСЛО(A1); НЕ(ЕДАТА(A1)))4. Поиск чисел с помощью функции НАЙТИ и подстановочных знаков
Если числа в вашей таблице хранятся как часть текста (например, "Артикул: 12345"), стандартные методы вроде
ЕЧИСЛОне сработают. В этом случае поможет комбинация функцийНАЙТИ,ПОИСКиЕОШИБКА.Пример формулы для проверки, содержит ли ячейка хотя бы одну цифру:
=НЕ(СУММПРОИЗВ(--ЕОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9}; A1))) = 10)Как это работает:
- Функция
НАЙТИищет в ячейкеA1каждую цифру от 0 до 9.ЕОШИБКАвозвращаетИСТИНА, если цифра не найдена.СУММПРОИЗВсчитает количество ошибок (ненайденных цифр).- Если все 10 цифр не найдены, результат будет
10, и формула вернётЛОЖЬ. В противном случае —ИСТИНА.Для извлечения первого числа из текстовой строки используйте:
=ЗНАЧЕН(ПСТР(A1; МИН(ЕСЛИОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9}; A1); "")); СЧЁТЕСЛИ(--ПОДСТАВИТЬ(ПСТР(A1; МИН(ЕСЛИОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9}; A1); "")); 100); {"0";"1";"2";"3";"4";"5";"6";"7";"8";"9"}; ""); "≠")))Эта формула работает как массив и требует подтверждения
Ctrl+Shift+Enterв старых версиях Excel.5. Power Query: продвинутый поиск и преобразование чисел
Если вам нужно не просто найти, а преобразовать или агрегировать числа из больших наборов данных, Power Query (доступен в Excel 2016+ и Excel 365) станет идеальным решением. Этот инструмент позволяет:
- 🔍 Находить числа в текстовых строках и извлекать их.
- 📊 Фильтровать таблицы по числовым значениям.
- 🔄 Преобразовывать текстовые числа в числовой формат.
- 📤 Экспортировать результаты в новую таблицу.
Пошаговая инструкция для извлечения чисел из текста:
- Выделите исходные данные и перейдите на вкладку
Данные→Из таблицы/диапазона(в группеПолучить и преобразовать данные).- В открывшемся окне Power Query выделите столбец с текстовыми данными.
- Перейдите на вкладку
Преобразовать→Извлечь→Текст после делителя(если числа идут после определённого символа, например, "№").- Или используйте
Добавить столбец→Извлечение→Текст между делителями, указав в качестве делителей символы, окружающие число.- Преобразуйте новый столбец в числовой формат: выделите его →
Преобразовать→Тип данных: Целое число.- Нажмите
Закрыть и загрузить, чтобы вернуть данные в Excel.Power Query автоматически обновляет результаты при изменении исходных данных — это идеальный инструмент для регулярной обработки отчётов.
Как извлечь все числа из строки типа "А12Б34В56"
1. В Power Query добавьте пользовательский столбец с формулой:
= Text.Select([Column1], {"0".."9"})2. Преобразуйте результат в числовой формат.
3. При необходимости разбейте полученную строку на отдельные числа с помощью
Разделить столбец → По количеству символов(указав длину каждого числа).6. Макросы VBA: автоматизация поиска чисел
Если вам регулярно приходится искать числа в больших файлах, имеет смысл автоматизировать процесс с помощью VBA-скриптов. Ниже приведён макрос, который:
- 🔍 Находит все числовые ячейки в выделенном диапазоне.
- 🎨 Выделяет их цветом.
- 📋 Копирует значения в новый лист.
Код макроса:
Sub FindAndHighlightNumbers()Dim rng As Range, cell As Range
Dim ws As Worksheet
Dim i As Integer
' Создаём новый лист для результатов
Set ws = Worksheets.Add
ws.Name = "Числа_найдены"
i = 1
' Проходим по выделенному диапазону
For Each cell In Selection
If IsNumeric(cell.Value) And Not IsEmpty(cell.Value) Then
' Выделяем ячейку цветом
cell.Interior.Color = RGB(255, 255, 0) ' Жёлтый
' Копируем значение на новый лист
ws.Cells(i, 1).Value = cell.Value
ws.Cells(i, 2).Value = cell.Address
i = i + 1
End If
Next cell
' Форматируем лист с результатами
ws.Columns("A:B").AutoFit
ws.Range("A1:B1").Value = Array("Значение", "Адрес ячейки")
ws.Range("A1:B1").Font.Bold = True
End Sub
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA.- Вставьте код в новый модуль (
Insert → Module).- Вернитесь в Excel, выделите диапазон данных и запустите макрос (
Alt + F8→ выберитеFindAndHighlightNumbers→Выполнить).Макрос создаст новый лист с двумя колонками:
Значение(само число) иАдрес ячейки(где оно было найдено). Все числовые ячейки в исходной таблице будут подсвечены жёлтым.⚠️ Внимание: Перед запуском макроса сохраните файл в формате.xlsm(с поддержкой макросов), иначе Excel заблокирует выполнение кода. Также отключите защиту листа, если она включена — макрос не сможет изменять ячейки.7. Поиск чисел в защищённых листах и скрытых ячейках
Если лист защищён или числа скрыты (например, в сводных таблицах), стандартные методы поиска могут не сработать. В этом случае:
Для защищённых листов:
- 🔓 Временно снимите защиту:
Рецензирование → Снять защиту листа(потребуется пароль, если он установлен).- 🔍 Примените один из методов, описанных выше (например, условное форматирование).
- 🔒 Верните защиту:
Рецензирование → Защитить лист.Для скрытых строк/столбцов:
- 👁️ Отобразите скрытые данные: выделите диапазон, включающий скрытые строки/столбцы → правая кнопка мыши →
Показать.- 🔢 Используйте функцию
ПОИСКПОЗдля поиска чисел в скрытых областях:=ЕСЛИ(ЕЧИСЛО(ДВССЫЛ("A" & ПОИСКПОЗ(ИСТИНА; ЕЧИСЛО(A:A); 0))); ДВССЫЛ("A" & ПОИСКПОЗ(ИСТИНА; ЕЧИСЛО(A:A); 0)); "Нет чисел")Эта формула находит первое число в столбце
A, даже если строка скрыта.Для сводных таблиц:
- 📊 Дважды кликните по числовому значению в сводной таблице — Excel откроет новый лист с детализацией данных, где можно применить фильтры или условное форматирование.
- 🔍 Используйте
ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ(GETPIVOTDATA), чтобы извлечь числа в отдельный диапазон:=ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("Сумма"; $A$3)Сравнение методов: какой выбрать?
Выбор метода зависит от размера данных, структуры таблицы и цели поиска. Ниже сравнительная таблица:
Метод Скорость Подходит для больших данных Требует знания формул Автоматизация Когда использовать Фильтр ⭐⭐⭐ ❌ (до 10 000 строк) ❌ ❌ Быстрый визуальный анализ Условное форматирование ⭐⭐⭐ ⭐ (до 50 000 строк) ⭐ (нужна формула ЕЧИСЛО)❌ Выделение чисел цветом Функции ( ЕЧИСЛО,СЧЁТЕСЛИ)⭐⭐ ⭐⭐ (до 100 000 строк) ⭐⭐ ❌ Подсчёт или суммирование чисел Power Query ⭐⭐⭐⭐ ⭐⭐⭐⭐ (миллионы строк) ⭐⭐ ⭐⭐⭐ (обновляется автоматически) Извлечение и преобразование чисел VBA ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐ Регулярная обработка больших файлов Для разовых задач на небольших таблицах хватит фильтра или условного форматирования. Для ежемесячных отчётов с тысячами строк оптимально использовать Power Query или VBA.
FAQ: Частые вопросы о поиске чисел в Excel
🔹 Почему Excel не находит числа в ячейках, где они есть?
Скорее всего, числа хранятся как текст. Проверьте это по зелёному треугольнику в углу ячейки или через
Формат ячеек. Чтобы исправить:
- Выделите проблемные ячейки.
- Нажмите на восклицательный знак рядом с ячейкой →
Преобразовать в число.- Или используйте формулу
=ЗНАЧЕН(A1)в соседнем столбце и скопируйте значения обратно.🔹 Как найти числа в диапазоне, игнорируя даты?
Даты в Excel хранятся как числа, поэтому
ЕЧИСЛОраспознаёт их как числовые данные. Чтобы исключить даты, используйте комбинацию:=И(ЕЧИСЛО(A1); A1 < ДАТА(1900;1;1))Эта формула проверяет, что значение — число, но меньше минимальной даты в Excel (01.01.1900).
🔹 Можно ли найти числа в защищённом файле без снятия защиты?
Нет, если лист защищён от изменений, то и условное форматирование, и макросы не смогут модифицировать ячейки. Альтернативные варианты:
- Создайте копию файла и снимите защиту с неё.
- Используйте
Power Queryдля импорта данных из защищённого файла в новый (данные будут скопированы без защиты).- Если у вас есть права администратора, запросите пароль у владельца файла.
🔹 Как извлечь все числа из текста вида "123abc456def789"?
Для такого формата подойдёт формула массива (вводится с
Ctrl+Shift+Enterв старых версиях Excel):=ТЕКСТСОЕДИНИТЬ(""; ИСТИНА; ЕСЛИОШИБКА(--ПСТР(A1; СТРОКА(ДВССЫЛ("1:100")); 1); ""))Или используйте Power Query с пользовательской функцией на языке
M:= Text.Select([Column1], {"0".."9"})🔹 Почему макрос не находит числа в ячейках с формулами?
Макрос из раздела 6 проверяет значения ячеек, а не формулы. Если ячейка содержит формулу типа
=СУММ(B1:B10), но результат — число, макрос его найдёт. Если же формула возвращает текст (например,=ЕСЛИ(B1=0; "Нет"; B1)), то:
- Исправьте формулу, чтобы она всегда возвращала число.
- Или модифицируйте макрос, добавив проверку
cell.HasFormulaи вычисление значения черезcell.Value2.