Excel содержит только цифры

 

Как проверить что в ячейке ТОЛЬКО цифры или буквы (или цифры и буквы)?

Как вариант: если в ячейке ТОЛЬКО цифры или буквы (или цифры и буквы) — TRUE
если в ячейке имеются помимо цифр/букв какие-то другие символы (%, -, _, №, » и т.п.) — FALSE

И как усложненый вариант вопроса — буквы только латиница?

Спасибо!!!

 

k61

Пользователь

Сообщений: 2441
Регистрация: 21.12.2012

Достаточно проверить содержит ли строка «какие-то другие символы (%, -, _, №, » и т.п.)», тогда — FALSE.

 

Владимир

Пользователь

Сообщений: 8196
Регистрация: 21.12.2012

Карен, доброго утречка.  :)

Изменено: Владимир05.10.2014 10:34:34
(Обнаружил ошибку с Кирило-Мифодицей)

«..Сладку ягоду рвали вместе, горьку ягоду я одна.»

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Вариант деления на цифры/не цифры:
=ЕСЛИ(ЕЧИСЛО(-A1);»только цифры»;ЕСЛИ(И(ДЛСТР(ПОДСТАВИТЬ(A1;{0;1;2;3;4;5;6;7;8;9};))=ДЛСТР(A1));»нет цифр»;»смесь»))

 

Все_просто

Пользователь

Сообщений: 1042
Регистрация: 10.06.2013

#5

01.08.2013 20:23:18

Можно формулой массива. Приведенная формула — частный случай того, что Вы просите для случая содержатся ли буквы.

Код
=ИЛИ(ЕЧИСЛО(ПОИСК({"А";"Б";"В";"Г";"Д";"Е";"Ж";"З";"И";"Й";"К";"Л";"М";"Н";"О";"П";"Р";"С";"Т";"У";"Ф";"Х";"Ц";"Ч";"Ш";"Щ";"Ъ";"Ы";"Ь";"Э";"Ю";"Я";"а";"б";"в";"г";"д";"е";"ж";"з";"и";"й";"к";"л";"м";"н";"о";"п";"р";"с";"т";"у";"ф";"х";"ц";"ч";"ш";"щ";"ъ";"ы";"ь";"э";"ю";"я"};F139)))

F139 — адрес ячейки, содержимое которой нужно проверить.
Вообще, так можно проверить наличие любого символа в слове, насколько я понимаю. Просто подставьте вместо содержимого массива другие символы. Удачи!

Изменено: Все_просто01.08.2013 20:25:04

С уважением,
Федор/Все_просто

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#6

01.08.2013 20:37:55

Попаразитировал на файле Володи:

Код
Public Function DigLett(s$) As Boolean
    With CreateObject("vbscript.regexp")
        .Global = -1: .MultiLine = True: .Pattern = "[a-zA-Zd]."
        DigLett = .test(s)
    End With
End Function

Прикрепленные файлы

  • Иванов.xlsm (14.4 КБ)

Изменено: KuklP01.08.2013 20:41:41

Я сам — дурнее всякого примера! …

 

Все_просто,  функция ПОИСК() не различает строчные и прописные, потому массив букв можно сократить в два раза. Вот если вместо ПОИСК написать НАЙТИ, тогда правильно.

 

Забыл про это. Главное передал суть. :)

С уважением,
Федор/Все_просто

 

The_Prist

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#9

01.08.2013 20:40:56

Серега, может имеет смысл и русские символы добавить?

Код
.Global = -1: .MultiLine = True: .IgnoreCase = true: .Pattern = "[a-zа-яё0-9]."

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#10

01.08.2013 20:43:40

Дим, я так понял ТС это надо:

Цитата
Иван Иванов пишет:
И как усложненый вариант вопроса — буквы только латиница?

А кириллицу добавить — не вопрос :)

Я сам — дурнее всякого примера! …

 

Михаил С.

Пользователь

Сообщений: 10514
Регистрация: 21.12.2012

#11

01.08.2013 20:50:45

По мотивам формулы Все_просто, не массивная

Код
=И(СЧЁТ(ПОИСК({"А";"Б";"В";"Г";"Д";"Е";"Ж";"З";"И";"Й";"К";"Л";"М";"Н";"О";"П";"Р";"С";"Т";"У";"Ф";"Х";"Ц";"Ч";"Ш";"Щ";"Ъ";"Ы";"Ь";"Э";"Ю";"Я"};A1)))
 

Все_просто

Пользователь

Сообщений: 1042
Регистрация: 10.06.2013

#12

01.08.2013 20:55:02

Код
=ИЛИ(ЕЧИСЛО(НАЙТИ(СИМВОЛ(СТРОКА(ДВССЫЛ("65:122")));F199)))

Формулой массива для латиницы.
F199 — проверяемая ячейка.

Изменено: Все_просто01.08.2013 20:57:40

С уважением,
Федор/Все_просто

 

Неужели =и() можно использовать, чтобы избавиться от массива?
Одно дело использовать =суммпроизв() вместо =сумм(), а другое =и() вместо =или().
Для меня это открытие :)
И кстати, скорее всего формула выложенная в 12 посте не сработает. Я ее проверял, но результат оказался неверным.
Если заменить кириллические символы на латинские, как в 11 или 5 посте, все получится.

С уважением,
Федор/Все_просто

 

Михаил С.

Пользователь

Сообщений: 10514
Регистрация: 21.12.2012

#14

01.08.2013 21:20:46

ДВССЫЛ — любимая функция? а без нее)

Код
=ИЛИ(ЕЧИСЛО(НАЙТИ(СИМВОЛ(СТРОКА(65:122));F199)))

и, кстати, СИМВОЛ(СТРОКА(91:96)) вернет {«[«:»»:»]»:»^»:»_»:»`»}

Цитата
Все_просто пишет:
Неужели =и() можно использовать, чтобы избавиться от массива

нельзя. Здесь И из числа делает логическое значение. От массива в данном случае позволяет уйти функция СЧЁТ() — считает только числа, все остальное (включая и ошибки) игнорируя.

Изменено: Михаил С.01.08.2013 21:22:33

 

Thekypshak

Пользователь

Сообщений: 12
Регистрация: 28.11.2016

Извиняюсь за некро, можете обьяснить для чего нужна ссылка (СТРОКА(65:122)?

Дело в том что мне нужна схожая формула, не хотел создавать новую тему
Мне надо чтобы ячейку проверяло на наличие текста и текста с цифрами, если только текст то надо 1. если текст с цифрами то 0.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

СТРОКА(65:122) — массив чисел от 65 до 122.
А теперь посмотрите коды символов латиницы (Вставка-Символ)

 

Thekypshak

Пользователь

Сообщений: 12
Регистрация: 28.11.2016

А на вторую часть поста сможете ответ дать?
Понимаю что для вас вопрос элементарный, но для меня как начинающего пользователя excel’я это трудно решить ((

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#19

01.12.2016 21:13:09

Цитата
Thekypshak написал:
А на вторую часть

Дали. В №6.

Я сам — дурнее всякого примера! …

 

qwesz

Пользователь

Сообщений: 1
Регистрация: 24.07.2017

На самом деле «только цифры» и «только буквы» проверяются через двойное «не». Если в ячейке отсутствуют не-цифры, значит там только цифры. T.e. not (not( is_digital))

Изменено: qwesz24.07.2017 04:52:14

 

Михаил С.

Пользователь

Сообщений: 10514
Регистрация: 21.12.2012

#21

24.07.2017 07:38:47

Если только цифры — значит это число; достаточно =ЕОШ(—A1)

Как посчитать количество цифр в ячейках, даже если помимо цифр в них есть другие символы? Как посчитать ячейки, содержащие только цифры? А ячейки, содержащие цифры и другие символы?

На эти и другие вопросы вы найдете ответы в этой статье.

Посчитать цифры внутри ячеек

Если число целое, число символов в ячейке будет равно числу цифр. В таком случае формула будет:

Но что, если число дробное (с запятой), или содержит буквенные символы/пунктуацию?

Тут поможет формула массива на основе функций ПОДСТАВИТЬ и ДЛСТР:

Формула массива для подсчета цифр внутри ячейки
Формула массива для подсчета цифр внутри ячейки

А вот сам текст формулы, который можно скопировать:

=СУММ(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;{1;2;3;4;5;6;7;8;9;0};"")))

Механика формулы довольно проста:

  1. Функция ПОДСТАВИТЬ в исходной строке поочередно заменяет на пустоту каждое из значений числового массива
  2. Функция ДЛСТР в каждом из случаев возвращает длину результирующей строки
  3. Из исходной длины вычитается эта длина (если цифры в строке не было, результат будет нулевым)
  4. Производится суммирование всех результатов

Посчитать числовые ячейки (содержащие только числа)

Чрезвычайно ненадежное базовое решение, работающее только в случаях, когда в данных действительно содержатся только числа – это использовать функцию СЧЁТ. Пример:

Формула с функцией СЧЁТ для подсчета чисел в диапазоне
Функция СЧЁТ считает числа в диапазоне

Обратите внимание, функция не учтет ячейки даже если они просто форматированы как текст. Вот одно из более надежных решений, тоже формула массива:

формула для подсчета числовых ячеек с числами в текстовом формате
Надежная формула для подсчета числовых ячеек, не игнорирующая числа в текстовом формате
=СУММ(1-ЕОШИБКА(ЗНАК(A2:A6)))

Формулу нужно вводить сочетанием Ctrl + Shift + Enter, иначе она не сработает.

Механика этой формулы:

  1. Для каждой из ячеек диапазона функция ЗНАК возвращает числовое значение или ошибку. Особенность функции в том, что в отличие от функции СЧЁТ, она игнорирует формат ячейки
  2. Если в ячейке действительно не число, а текст или текст + цифры, функция выдаст ошибку, и ее подхватит функция ЕОШИБКА, выдавая ИСТИНА в случае ошибки и ЛОЖЬ в случае ее отсутствия
  3. Как обнулить ошибки и сделать единицами их отсутствие? Очень просто — вычесть их из единицы. ИСТИНА эквивалентна единице и вернет в таком случае 0, а ЛОЖЬ равна нулю и вернет 1
  4. Просуммируем итоговые результаты

Посчитать в диапазоне ячейки, содержащие цифры

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

=СЧЁТ(ПОИСК({1:2:3:4:5:6:7:8:9:0};A1))>0

А далее — уже дело техники! Задача лишь в том, чтобы посчитать количество ячеек, содержащих ИСТИНА.

Например, можно функцией СЧЁТЕСЛИ:

Выявить ячейки с цифрами и посчитать их СЧЁТЕСЛИ
Выявляем ячейки, содержащие цифры, и считаем их

Можно использовать формулу массива, с помощью двойного отрицания диапазона сделать ИСТИНЫ и ЛОЖЬ единицами и нулями соответственно, а потом просуммировать получившиеся значения массива. Не забудьте про Ctrl + Shift + Enter при вводе формулы.

чтобы в ячейке появились характерные для формул массива фигурные скобки:

Выявить ячейки с цифрами и посчитать их формулой массива
Двойное отрицание массива и формула СУММ

Заключение

Итак, надеюсь, вам помогла эта статья и вы успешно решите любую задачу по подсчету цифр в ячейках и подсчету самих этих ячеек. Хотите поблагодарить автора? Приобретите мою надстройку для Excel — она ускоряет выполнение множества рутинных задач.

Содержание

  1. Как оставить в ячейке только цифры или только текст?
  2. Поиск по меткам
  3. Как в Excel определить содержит ли ячейка число
  4. Основная формула
  5. Описание
  6. Пояснение
  7. Содержит ли ячейка числовое значение?

Как оставить в ячейке только цифры или только текст?

Вот бывает так: есть у Вас в ячейке некий текст. Допустим «Было доставлено кусков мыла 763шт.». Вам нужно из этого только 763 — чтобы можно было провести с этим некие математические действия. Если это только одна ячейка — проблем тут нет, а если таких ячеек пару тысяч? И к тому же все разные?

  • Было доставлено кусков мыла 763шт.
  • Всего пришло 34
  • Тюбики — 54 доставлено
  • и т.д.

Никакой зацепки для извлечения данных. Пару тысяч таких строк удалять вручную весьма утомительное занятие, надо сказать. Да еще и не быстрое.
Есть несколько вариантов решения подобной задачи.

СПОСОБ 1: не используем макросы
можно применить формулу массива, вроде такой:
=ПСТР( A1 ;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР( A1 ;СТРОКА( $1:$99 );1));СТРОКА( $1:$99 )));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР( A1 ;СТРОКА( $1:$99 );1));СТРОКА( $1:$99 ))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР( A1 ;СТРОКА( $1:$99 );1));СТРОКА( $1:$99 )))+1)
Три важных момента:

  1. Формула вводится в ячейку сочетанием клавиш Ctrl+Shift+Enter, т.к. является формулой массива. Подробнее про эти формулы читайте в статье: Что такое формула массива
  2. в таком виде формула работает с текстом, количество символов в котором не превышает 99. Чтобы расширить необходимо в формуле во всех местах заменить СТРОКА( $1:$99 ) на СТРОКА( $1:$200 ) . Т.е. вместо 99 указать количество символов с запасом. Только не увлекайтесь, иначе может получиться, что формула будет работать слишком долго
  3. формула не обработает корректно текст » Было доставлено кусков мыла 763шт., а заказывали 780 » и ему подобный, где числа раскиданы по тексту.

Теперь коротко разберем формулу на примере фразы: Было доставлено кусков мыла 763шт.

  • в A1 сам текст, из которого необходимо извлечь числа: Было доставлено кусков мыла 763шт., а заказывали 780
  • блок: МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР( A1 ;СТРОКА( $1:$99 );1));СТРОКА( $1:$99 )))
    вычисляет позицию первой цифры в ячейке — 29
  • блок: ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР( A1 ;СТРОКА( $1:$99 );1));СТРОКА( $1:$99 ))
    вычисляет позицию последней цифры в ячейке — 31
  • в результате получается: =ПСТР( A1 ;29;3129+1)
    функция ПСТР извлекает из текста, указанного первым аргументом( A1 ) текст, начиная с указанной позиции(29) с количеством символов, указанным третьим аргументом(3129+1)
  • И в итоге:
    =ПСТР( A1 ;29;3129+1)
    => =ПСТР( A1 ;29;2+1)
    => =ПСТР( A1 ;29;3)
    => 763

Может быть задача проще — необходимо извлечь односоставной текст, убрав цифры вначале и в конце строки, учитывая, что сам текст всегда следует после разделителя(например, тире):
12.08-АГСВ2
12.08-АГСВ1
01.03-ОВ2
12.03-КЖ6.1
Из этих данных надо получить только текст после тире(-) и отсечь цифры на конце:
АГСВ
АГСВ
ОВ
КЖ
Формула будет работать почти по тому же принципу, что и формула выше, но она проще:
=ПСТР( A1 ;ПОИСК(«-«; A1 )+1;ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(—ПСТР(ПСТР( A1 ;ПОИСК(«-«; A1 )+1;999);СТРОКА( $1:$99 );1));0)-1)
В данном случае мы при помощи ПОИСК(«-«; A1 ) ищем сначала позицию тире, далее при помощи ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(—ПСТР(ПСТР( A1 ;ПОИСК(«-«; A1 )+1;999);СТРОКА( $1:$99 );1));0) находим именно в отсеченном тексте позицию первой цифры. Передаем эти значения в ПСТР , которая отбирает из этого текста все от первого тире(+1) до первого числа, идущего после текста.

СПОСОБ 2: используем макросы
Самый главный недостаток метода при помощи формулы, приведенной выше — из текста » Было доставлено кусков мыла 763шт., а заказывали 780 » формула вернет не только числа, а и текст между первой и последней цифрой: 763шт., а заказывали 780 .
Решить же проблему извлечения цифр даже из такого текста при помощи VBA куда проще и гибче. Плюс можно не только цифры извлекать, но и наоборот — цифры удалить, а извлечь только текст. Ниже приведен код пользовательской функции, которая поможет извлечь из строки только числа либо только текст. Иными словами, результатом функции будет либо только текст, либо только числа.

Function Extract_Number_from_Text(sWord As String, Optional Metod As Integer) ‘sWord = ссылка на ячейку или непосредственно текст ‘Metod = 0 – числа ‘Metod = 1 – текст Dim sSymbol As String, sInsertWord As String Dim i As Integer If sWord = «» Then Extract_Number_from_Text = «Нет данных!»: Exit Function sInsertWord = «» sSymbol = «» For i = 1 To Len(sWord) sSymbol = Mid(sWord, i, 1) If Metod = 1 Then If Not LCase(sSymbol) Like «*[0-9]*» Then If (sSymbol = «,» Or sSymbol = «.» Or sSymbol = » «) And i > 1 Then If Mid(sWord, i — 1, 1) Like «*[0-9]*» And Mid(sWord, i + 1, 1) Like «*[0-9]*» Then sSymbol = «» End If End If sInsertWord = sInsertWord & sSymbol End If Else If LCase(sSymbol) Like «*[0-9.,;:-]*» Then If LCase(sSymbol) Like «*[.,]*» And i > 1 Then If Not Mid(sWord, i — 1, 1) Like «*[0-9]*» Or Not Mid(sWord, i + 1, 1) Like «*[0-9]*» Then sSymbol = «» End If End If sInsertWord = sInsertWord & sSymbol End If End If Next i Extract_Number_from_Text = sInsertWord End Function

Данный код необходимо поместить в стандартный модуль книги. После этого в мастере функций в категории Определенные пользователем (User Defined) будет доступна функция Extract_Number_from_Text , которую можно будет применять как обычную функцию на листе.
Для извлечения только чисел
=Extract_Number_from_Text( A1 ; 0)
или
=Extract_Number_from_Text( A1 )
Для извлечения только текста
=Extract_Number_from_Text( A1 ; 1)

Подробнее про создание пользовательских функции и их применении можно почитать в статье Что такое функция пользователя(UDF)?

Помимо функции пользователя решил выложить и вариант с использованием диалогового окна:

Выбрать ячейку или диапазон с текстом(Лист1! $A$2:$A$10 ) — здесь указывается диапазон с исходными значениями, из которого необходимо оставить только числа или только текст.

Выберите ячейку для вывода данных(Лист1! $A$2 ) — указывается одна ячейка, с которой начать вывод преобразованных значений. В качестве этой ячейки можно выбрать первую ячейку диапазона с текстом(исходного) если необходимо произвести изменения сразу в этих же ячейках(как на рисунке). Осторожнее с таким указанием, т.к. результат работы кода может быть не совсем таким, какой вы ожидали, а вернуть прежние данные уже не получится — если только не закрыть файл без сохранения изменений.

Оставить только цифры, Оставить только текст— думаю не надо пояснять. Здесь выбираем, что оставить в качестве результата.

Небольшое дополнение к использованию кода
В коде есть строка:

If LCase(sSymbol) Like «*[0-9.,;:-]*» Then

Данная строка отвечает за текстовые символы, которые могут встречаться внутри чисел и которые надо оставить(не удалять наравне с другими не числовыми символами). Следовательно, если какие-то из данных символов не нужны в конечном тексте — их надо просто удалить. Например, чтобы оставались исключительно числа(без запятых и пр.):

If LCase(sSymbol) Like «*[0-9]*» Then

если надо исключить из удаления помимо цифр точку(т.е. будут извлечены цифры и точка):

If LCase(sSymbol) Like «*[0-9.]*» Then

и т.д.
Скачать пример:

Число из текста и наоборот.xls (99,0 KiB, 17 601 скачиваний)

Статья помогла? Поделись ссылкой с друзьями!

Поиск по меткам

Здравствуйте скрипт при обработке ячейки:
Пр-ка ТНВД 5301 (пер.) 50-1006315-Б2 выдает: 530150-1006315-2
вопрос есть возможность что бы он брал только последних 15-20 сим.
с заглавными А-Я, или хотя бы цифирки.
Буду признателен за предложения.
Возможно есть проще варианты(12000 стр.записеи) обрезани до последних 10-20сим.

Александр, последние 15-20 символов можно взять при помощи функции ПРАВСИМВ(RIGHT). Так же можно совместить:
=Extract_Number_from_Text(ПРАВСИМВ(A1))
Более сложные вариации извлечения делаются под конкретные данные с учетом различных нюансов.

Добрый день!
Спасибо за замечательный код! Подскажите пожалуйста, как оставить среди неудаляемых символов пробел?
Например, в ячейке было «Т-образный поворот SPB-RF60 TE-200 SS316L».
Ваш код оставляет (после некоторой модификации) «60200316».
А хотелось бы «60 200 316».
Я не понимаю как вписать пробел в строку
Like «*[0-9.,;:-]*» Then

А всё разобрался, пробел нужно указывать в середине ряда, а не в конце.

Здравствуйте.
Использовал функцию, вызванную на VBA, все нормально, при вызове мастера функций он нормально отрабатывает
Но при выполнение в эксель, выскакивает сообщение, что здесь используется циклическая ссылка и потом появляется значение 0. В чем дело?

Добрый день!
А что надо добавить в код/формулу чтобы из строки
«ТП ВЕТЧИННАЯ ВАРЕНАЯ 400Г (162854) /Ш/»
— вытащить только цифры до буквы Г?
— или без содержимого скобок
Заранее большое спасибо!

Нашла пока только такой вариант решения:
=ЛЕВСИМВ(B5;ПОИСК(«г «;B5)-1)
Затем в другой колонке
=ЕСЛИОШИБКА(ПСТР(C5;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(C5;СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(C5;СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(C5;СТРОКА($1:$99);1));СТРОКА($1:$99)))+1);1000)
И в третьей колонке = из предыдущей и преобразовать в числовой формат макросом
Результат достигнут, но если расскажите как можно было сделать изящнее — обязательно запомню))

Public Function RegExpExtract(Text As String, Pattern As String, Optional Item As Integer = 1) As String On Error GoTo ErrHandl Set regex = CreateObject(«VBScript.RegExp») regex.Pattern = Pattern regex.Global = True If regex.Test(Text) Then Set matches = regex.Execute(Text) RegExpExtract = matches.Item(Item — 1) Exit Function End If ErrHandl: RegExpExtract = CVErr(xlErrValue) End Function

И играйтесь регулярками, на лету выбирая нужные части текста. Инфы с примерами, благо, достаточно.

Денис, спасибо. Но есть все равно пара замечаний, раз уж предлагаете воспользоваться функцией. Неплохо было бы добавить и пример применения. Иначе как тому, кто зайдет почитать использовать Ваше решение?
Я умею использовать регулярки и по коду вижу, что помимо текста надо указать не только шаблон, но еще и номер элемента, который получить. Что является немаловажным замечанием.
Для извлечения первого числа(без разделения групп разрядов) — =(RegExpExtract( A1 ;»d»;1)
Для извлечения первого текста(что не очень удобно, если чисел в тексте много) — =(RegExpExtract( A1 ;»D»;1)
Оба варианта слегка халтурны, но для понимания общего смысла использования подойдут.
В общем и целом я бы в функцию еще параметр IgnoreCase добавил(при извлечении текста по шаблону может потребоваться). Да и Multiline тоже иногда может играть роль(зависит от шаблона и текста), поэтому его тоже лучше ставить в True сразу в случае с такими функциями.

Источник

Как в Excel определить содержит ли ячейка число

Возможность проверить, содержит ли ячейка или все ячейки рабочего листа число, может быть полезна при выполнении вычислений. С этим так легко ошибиться, и даже небольшие ошибки могут привести к огромным результатам. Однако решение есть всегда. В этом учебном материале по Excel мы рассмотрим примеры того как узнать содержит ли ячейка число.

Основная формула

Описание

Чтобы проверить, содержит ли ячейка (или любая текстовая строка) число, вы можете использовать функцию НАЙТИ вместе с функцией СЧЁТ. В основной форме формулы (см. выше) A1 представляет ячейку, которую вы тестируете. Проверяемые числа (числа от 0 до 9) предоставляются в виде массива.
В этом примере формула в C5 имеет вид:

Пояснение

Функция НАЙТИ возвращает положение текста в ячейке и ошибку #ЗНАЧЕН!, если нет. В этом примере ячейка B5 содержит число «4» в 5 позиции. Итак, если бы мы просто использовали эту формулу:

В результате она вернет число 5. Однако, поскольку мы даем функции НАЙТИ массив элементов для проверки, она вернет массив результатов, который выглядит следующим образом:
<#ЗНАЧЕН!, #ЗНАЧЕН!, #ЗНАЧЕН!, #ЗНАЧЕН!,4, #ЗНАЧЕН!, #ЗНАЧЕН!, #ЗНАЧЕН!, #ЗНАЧЕН!, #ЗНАЧЕН!>
Другими словами, НАЙТИ проверяет содержимое B5 для каждого числа и возвращает результат каждой проверки как элемент массива.
После того, как НАЙТИ вернет массив, СЧЁТ считает элементы в массиве. СЧЁТ считает только числовые значения, поэтому любой элемент #ЗНАЧЕН! в массиве обрабатывается как ноль. Если в массиве есть числа СЧЁТ вернет число больше нуля, если нет то вернет ноль.
Последний шаг в формуле — сравнение результата функций НАЙТИ и СЧЁТ с нулем. Если были найдены какие-либо числа, формула вернет ИСТИНА. В противном случае формула вернет ЛОЖЬ.
Если вы хотите сделать что-то большее, чем просто проверить, содержит ли ячейка текст, вы можете заключить формулу в оператор ЕСЛИ следующим образом:

Вместо того, чтобы возвращать ИСТИНА или ЛОЖЬ, приведенная выше формула возвращает «Да», если B5 содержит какие-либо числа, и «Нет», если не содержит.

Содержит ли ячейка числовое значение?

Если вам нужно только проверить, содержит ли ячейка числовое значение, вы можете использовать функцию ЕЧИСЛО следующим образом:

Источник

Хитрости »

1 Май 2011              398128 просмотров


Как оставить в ячейке только цифры или только текст?

Вот бывает так: есть у Вас в ячейке некий текст. Допустим «Было доставлено кусков мыла 763шт.». Вам нужно из этого только 763 — чтобы можно было провести с этим некие математические действия. Если это только одна ячейка — проблем тут нет, а если таких ячеек пару тысяч? И к тому же все разные?

  • Было доставлено кусков мыла 763шт.
  • Всего пришло 34
  • Тюбики — 54 доставлено
  • и т.д.

Никакой зацепки для извлечения данных. Пару тысяч таких строк удалять вручную весьма утомительное занятие, надо сказать. Да еще и не быстрое.
Есть несколько вариантов решения подобной задачи.


СПОСОБ 1: не используем макросы
можно применить формулу массива, вроде такой:
=ПСТР(A1;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99)))+1)
Три важных момента:

  1. Формула вводится в ячейку сочетанием клавиш Ctrl+Shift+Enter, т.к. является формулой массива. Подробнее про эти формулы читайте в статье: Что такое формула массива
  2. в таком виде формула работает с текстом, количество символов в котором не превышает 99. Чтобы расширить необходимо в формуле во всех местах заменить СТРОКА($1:$99) на СТРОКА($1:$200). Т.е. вместо 99 указать количество символов с запасом. Только не увлекайтесь, иначе может получиться, что формула будет работать слишком долго
  3. формула не обработает корректно текст «Было доставлено кусков мыла 763шт., а заказывали 780» и ему подобный, где числа раскиданы по тексту.

Теперь коротко разберем формулу на примере фразы: Было доставлено кусков мыла 763шт.

  • в A1 сам текст, из которого необходимо извлечь числа: Было доставлено кусков мыла 763шт., а заказывали 780
  • блок: МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99)))
    вычисляет позицию первой цифры в ячейке — 29
  • блок: ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99))
    вычисляет позицию последней цифры в ячейке — 31
  • в результате получается: =ПСТР(A1;29;3129+1)
    функция ПСТР извлекает из текста, указанного первым аргументом(A1) текст, начиная с указанной позиции(29) с количеством символов, указанным третьим аргументом(3129+1)
  • И в итоге:
    =ПСТР(A1;29;3129+1)
    => =ПСТР(A1;29;2+1)
    => =ПСТР(A1;29;3)
    => 763

Может быть задача проще — необходимо извлечь односоставной текст, убрав цифры вначале и в конце строки, учитывая, что сам текст всегда следует после разделителя(например, тире):

12.08-АГСВ2
12.08-АГСВ1
01.03-ОВ2
12.03-КЖ6.1

Из этих данных надо получить только текст после тире(-) и отсечь цифры на конце:

АГСВ
АГСВ
ОВ
КЖ

Формула будет работать почти по тому же принципу, что и формула выше, но она проще:

=ПСТР(A1;ПОИСК(«-«;A1)+1;ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(—ПСТР(ПСТР(A1;ПОИСК(«-«;A1)+1;999);СТРОКА($1:$99);1));0)-1)

В данном случае мы при помощи

ПОИСК(«-«;A1)

ищем сначала позицию тире, далее при помощи

ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(—ПСТР(ПСТР(A1;ПОИСК(«-«;A1)+1;999);СТРОКА($1:$99);1));0)

находим именно в отсеченном тексте позицию первой цифры. Передаем эти значения в

ПСТР

, которая отбирает из этого текста все от первого тире(+1) до первого числа, идущего после текста.


СПОСОБ 2: используем макросы
Самый главный недостаток метода при помощи формулы, приведенной выше — из текста «Было доставлено кусков мыла 763шт., а заказывали 780» формула вернет не только числа, а и текст между первой и последней цифрой: 763шт., а заказывали 780.
Решить же проблему извлечения цифр даже из такого текста при помощи VBA куда проще и гибче. Плюс можно не только цифры извлекать, но и наоборот — цифры удалить, а извлечь только текст. Ниже приведен код пользовательской функции, которая поможет извлечь из строки только числа либо только текст. Иными словами, результатом функции будет либо только текст, либо только числа.

Function Extract_Number_from_Text(sWord As String, Optional Metod As Integer)
'sWord = ссылка на ячейку или непосредственно текст
'Metod = 0 – числа
'Metod = 1 – текст
    Dim sSymbol As String, sInsertWord As String
    Dim i As Integer
 
    If sWord = "" Then Extract_Number_from_Text = "Нет данных!": Exit Function
    sInsertWord = ""
    sSymbol = ""
    For i = 1 To Len(sWord)
        sSymbol = Mid(sWord, i, 1)
        If Metod = 1 Then
            If Not LCase(sSymbol) Like "*[0-9]*" Then
                If (sSymbol = "," Or sSymbol = "." Or sSymbol = " ") And i > 1 Then
                    If Mid(sWord, i - 1, 1) Like "*[0-9]*" And Mid(sWord, i + 1, 1) Like "*[0-9]*" Then
                        sSymbol = ""
                    End If
                End If
                sInsertWord = sInsertWord & sSymbol
            End If
        Else
            If LCase(sSymbol) Like "*[0-9.,;:-]*" Then
                If LCase(sSymbol) Like "*[.,]*" And i > 1 Then
                    If Not Mid(sWord, i - 1, 1) Like "*[0-9]*" Or Not Mid(sWord, i + 1, 1) Like "*[0-9]*" Then
                        sSymbol = ""
                    End If
                End If
                sInsertWord = sInsertWord & sSymbol
            End If
        End If
    Next i
    Extract_Number_from_Text = sInsertWord
End Function

Чтобы правильно использовать приведенный код, необходимо сначала ознакомиться со статьей Что такое функция пользователя(UDF)?. Вкратце: скопировать текст кода выше, перейти в редактор VBA(Alt+F11) -создать стандартный модуль(InsertModule) и в него вставить скопированный текст. После чего функцию можно будет вызвать из Диспетчера функций(Shift+F3), отыскав её в категории Определенные пользователем (User Defined Functions) и применять как обычную функцию на листе.
Для извлечения только чисел
=Extract_Number_from_Text(A1; 0)
или
=Extract_Number_from_Text(A1)
Для извлечения только текста
=Extract_Number_from_Text(A1; 1)

Подробнее про создание пользовательских функции и их применении можно почитать в статье Что такое функция пользователя(UDF)?


Помимо функции пользователя решил выложить и вариант с использованием диалогового окна:

Выбрать ячейку или диапазон с текстом(Лист1!$A$2:$A$10) — здесь указывается диапазон с исходными значениями, из которого необходимо оставить только числа или только текст.

Выберите ячейку для вывода данных(Лист1!$A$2) — указывается одна ячейка, с которой начать вывод преобразованных значений. В качестве этой ячейки можно выбрать первую ячейку диапазона с текстом(исходного) если необходимо произвести изменения сразу в этих же ячейках(как на рисунке). Осторожнее с таким указанием, т.к. результат работы кода может быть не совсем таким, какой вы ожидали, а вернуть прежние данные уже не получится — если только не закрыть файл без сохранения изменений.

Оставить только цифры, Оставить только текст— думаю не надо пояснять. Здесь выбираем, что оставить в качестве результата.

Небольшое дополнение к использованию кода
В коде есть строка:

If LCase(sSymbol) Like "*[0-9.,;:-]*" Then

Данная строка отвечает за текстовые символы, которые могут встречаться внутри чисел и которые надо оставить(не удалять наравне с другими не числовыми символами). Следовательно, если какие-то из данных символов не нужны в конечном тексте — их надо просто удалить. Например, чтобы оставались исключительно числа(без запятых и пр.):

If LCase(sSymbol) Like "*[0-9]*" Then

если надо исключить из удаления помимо цифр точку(т.е. будут извлечены цифры и точка):

If LCase(sSymbol) Like "*[0-9.]*" Then

и т.д.
Скачать пример:

  Число из текста и наоборот.xls (99,0 KiB, 17 665 скачиваний)

Также см.:
Извлечение числа из текста
Что такое функция пользователя(UDF)?
Как получить адрес гиперссылки из ячейки
Оставить цифры или текст при помощи PowerQuery


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Возможность проверить, содержит ли ячейка или все ячейки рабочего листа число, может быть полезна при выполнении вычислений. С этим так легко ошибиться, и даже небольшие ошибки могут привести к огромным результатам. Однако решение есть всегда. В этом учебном материале по Excel мы рассмотрим примеры того как узнать содержит ли ячейка число.

Как в Excel определить содержит ли ячейка число

Основная формула

=СЧЁТ(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1))>0

Описание

Чтобы проверить, содержит ли ячейка (или любая текстовая строка) число, вы можете использовать функцию НАЙТИ вместе с функцией СЧЁТ. В основной форме формулы (см. выше) A1 представляет ячейку, которую вы тестируете. Проверяемые числа (числа от 0 до 9) предоставляются в виде массива.
В этом примере формула в C5 имеет вид:

=СЧЁТ(НАЙТИ({0;1;2;3;4;5;6;7;8;9};B5))>0

Пояснение

Функция НАЙТИ возвращает положение текста в ячейке и ошибку #ЗНАЧЕН!, если нет. В этом примере ячейка B5 содержит число «4» в 5 позиции. Итак, если бы мы просто использовали эту формулу:

В результате она вернет число 5. Однако, поскольку мы даем функции НАЙТИ массив элементов для проверки, она вернет массив результатов, который выглядит следующим образом:
{#ЗНАЧЕН!, #ЗНАЧЕН!, #ЗНАЧЕН!, #ЗНАЧЕН!,4, #ЗНАЧЕН!, #ЗНАЧЕН!, #ЗНАЧЕН!, #ЗНАЧЕН!, #ЗНАЧЕН!}
Другими словами, НАЙТИ проверяет содержимое B5 для каждого числа и возвращает результат каждой проверки как элемент массива.
После того, как НАЙТИ вернет массив, СЧЁТ считает элементы в массиве. СЧЁТ считает только числовые значения, поэтому любой элемент #ЗНАЧЕН! в массиве обрабатывается как ноль. Если в массиве есть числа СЧЁТ вернет число больше нуля, если нет то вернет ноль.
Последний шаг в формуле — сравнение результата функций НАЙТИ и СЧЁТ с нулем. Если были найдены какие-либо числа, формула вернет ИСТИНА. В противном случае формула вернет ЛОЖЬ.
Если вы хотите сделать что-то большее, чем просто проверить, содержит ли ячейка текст, вы можете заключить формулу в оператор ЕСЛИ следующим образом:

=ЕСЛИ(СЧЁТ(НАЙТИ({0;1;2;3;4;5;6;7;8;9};B5))>0; «Да»; «Нет»)

Вместо того, чтобы возвращать ИСТИНА или ЛОЖЬ, приведенная выше формула возвращает «Да», если B5 содержит какие-либо числа, и «Нет», если не содержит.

Содержит ли ячейка числовое значение?

Если вам нужно только проверить, содержит ли ячейка числовое значение, вы можете использовать функцию ЕЧИСЛО следующим образом:

Пользователи Excel, несмотря на то, что поиск нужного символа кажется довольно простой задачей, часто не понимают, как сделать это. С некоторыми из них проще, с частью – сложнее. Также иногда появляются проблемы с поиском таких символов, как знак вопроса или звездочка из-за того, что они используются в фильтрах. Сегодня мы опишем способы доставать символы самых разных типов.

Содержание

  1. Как найти в ячейке текстовые символы (буквы и цифры)
  2. Как найти в ячейке таблицы цифры
  3. Как узнать, что ячейка Эксель содержит латиницу
  4. Как найти слова в ячейке, которые содержат кириллицу и латиницу
  5. Как найти в ячейке заглавные буквы
  6. Поиск символов в Excel при помощи регулярных выражений
  7. Что делать с найденными символами
  8. Удаление лишних символов в Excel
  9. Извлечение определенных символов в Excel
  10. Изменение символов в Excel

Как найти в ячейке текстовые символы (буквы и цифры)

Для начала попробуем выполнить самую простую задачу: определить наличие текстовых символов в ячейки и найти тот, который надо. Для этого нужно воспользоваться дополнением !SEMTools, с помощью которого можно искать символы разных типов. Последовательность действий следующая:

  1. Выделяем тот диапазон, который является изначальным и копируем его в соседнюю колонку.
  2. Затем выделяем второй диапазон.
  3. Открываем вкладку «!SEMTools». Там в самой левой части панели инструментов будет вкладка «Обнаружить».
  4. После этого открываем меню «Символы».
  5. Затем появится дополнительное меню, в котором надо найти пункт «Буквы-цифры» и нажать на него.

Поиск символа в строке таблицы Excel

На этой анимации вы можете точно увидеть, как правильно действовать, чтобы отыскать в ячейке текстовые символы. С помощью этой функции надстройки пользователь может определить, а есть ли в других ячейках непечатаемые символы.

Как найти в ячейке таблицы цифры

Иногда нужно определить ячейки, в которой есть цифры, но они находятся вместе с текстом. Когда таких ячеек становится очень много, может быть довольно нелегко определить их. Перед тем, как реализовывать эту задачу, нужно определиться с некоторыми базовыми терминами. Главное наше понятие – «обнаружить». Это означает – проверить, есть ли определенный тип символа в строке. Если да, возвращается значение «ИСТИНА», если нет «ЛОЖЬ». Если же кроме поиска цифр в ячейке пользователь хочет произвести иные действия, то можно воспользоваться дальнейшими разделами этой инструкции.

Второе понятие, которое нужно разобрать – цифры. Это интегральный термин, который обозначает аж 10 символов, которые соответствуют числам от 0 до 9. Соответственно, чтобы проверить наличие чисел, пользователю нужно 10 раз проверить диапазон. Это можно сделать с помощью функции ЕСЛИ, но такой подход требует очень много времени.

Чтобы решить эту проблему, можно воспользоваться специальной формулой, которая выполнит все проверки за один раз: =СЧЁТ(ПОИСК({1:2:3:4:5:6:7:8:9:0};A1))>0. Эта функция имеет тот же синтаксис, что и та, которая ищет кириллические символы в тексте.

Также можно воспользоваться надстройкой, в которой уже вмонтирован макрос для того, чтобы выполнять эту задачу. В таком случае достаточно просто воспользоваться специальной вкладкой !SEMTools, которую нужно применять на дополнительном столбце, который является полной копией того, который является исходным.

Следовательно, набор шагов, которые нужно предпринимать, полностью соответствует предыдущему пункту. Нужно сначала выделить исходный диапазон, скопировать его, а потом выделить появившуюся колонку и применить к ней макрос согласно последовательности шагов, приведенной в этой анимации.

Поиск символа в строке таблицы Excel

Предположим, нам нужно найти только определенные цифры из всех приведенных. Как можно это сделать? Для начала давайте покажем, как это делать с помощю !SEMTools. Использовать инструмент просто. Достаточно в скобках записывать все нужные цифры, и потом нажать кнопку ОК для подтверждения. С помощью этого же метода можно найти латиницу или найти большие буквы в строке текста. Поиск символа в строке таблицы Excel

Также можно воспользоваться формулой для того, чтобы отыскать в диапазоне ячеек необходимые цифры. Для этого надо применять комбинацию функций СЧЕТ и ПОИСК. С ее помощью можно обнаружить не только отдельные цифры, но и целые числовые последовательности: =СЧЁТ(ПОИСК({01:02:03:911:112};A1))>0.

Иногда надо найти числа, отделенные пробелами. В этом случае они называются словами-числами. Чтобы их найти, необходимо также воспользоваться соответствующими инструментами !SEMTools. На этой анимации наглядно показано, какие действия нужно выполнить, чтобы это сделать.

Поиск символа в строке таблицы Excel

Как узнать, что ячейка Эксель содержит латиницу

Очень часто пользователи Excel смешивают понятия «Найти» и «Извлечь», хотя между ними довольно большая разница. Под первым выражением подразумевают проверку, есть ли определенный символ в текстовой строке или диапазоне данных. В свою очередь, под понятием «Извлечь» подразумевают вытащить нужный символ из текста и передать его другой функции или записать в ячейку.

Что же нужно делать для того, чтобы обнаружить латиницу? Например, можно воспользоваться специальными шрифтами, которые дадут возможность определить английские символы на глаз. Например, это делает шрифт Dubai Medium, который делает английские символы жирными.

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

Использование специальной функции

Основная проблема поиска латинских букв, что их в два с половиной раза больше, чем цифр. Следовательно, нужно задавать программе цикл, состоящий из 26 итераций, что может быть довольно напряжно. Но если использовать формулу массива, состоящую из приведенных выше функций СЧЕТ и ПОИСК, то эта затея уже и не кажется настолько сложной: =СЧЁТ(ПОИСК({«a»:»b»:»c»:»d»:»e»:»f»:»g»:»h»:»i»:»j»:»k»:»l»:»m»:»n»:»o»:»p»:»q»:»r»:»s»:»t»:»u»:»v»:»w»:»x»:»y»:»z»};A1))>0. Эта формула вполне подходит для большинства ситуаций. Например, если нет возможности установить соответствующие макросы, которые бы смогли делать это проще и быстрее.

В описанной выше формуле A1 – это та ячейка, в которой осуществляется проверка. Соответственно, вам нужно поставить ту, которая подходит в вашей ситуации. В результате проверки с помощью этой функции возвращается логическое значение. Если совпадения обнаруживаются, то оператор возвращает ИСТИНА, если их нет – ЛОЖЬ.

Функция ПОИСК не дает возможности учитывать регистр при поиске символов. Чтобы это сделать, надо воспользоваться оператором НАЙТИ, который выполняет те же операции, имеет такие же самые аргументы, только уже учитывает регистр. Еще один способ – сделать описанную выше формулу формулой массива. В таком случае она будет иметь следующий вид:{=СЧЁТ(ПОИСК(СИМВОЛ(СТРОКА(65:90));A1))>0}.

Поскольку это формула массива, ее нужно указывать без скобок. При этом после ввода надо нажать комбинацию клавиш Ctrl + Shift + Enter (вместо простого нажатия клавиши ввода, как в случае с обычной функцией), после чего фигурные скобки появятся сами.

Если же нужно найти кириллицу, последовательность действий аналогичная, только в качестве диапазона поиска нужно задавать всю последовательность кириллических символов. =СЧЁТ(ПОИСК({«а»:»б»:»в»:»г»:»д»:»е»:»ё»:»ж»:»з»:»и»:»й»:»к»:»л»:»м»:»н»:»о»:»п»:»р»:»с»:»т»:»у»:»ф»:»х»:»ц»:»ч»:»ш»:»щ»:»ъ»:»ы»:»ь»:»э»:»ю»:»я»};A1))>0. Также можно юзать функцию СИМВОЛ, чтобы сделать это. {=СЧЁТ(ПОИСК(СИМВОЛ(СТРОКА(192:223));A1))>0}

Эта формула должна записываться так, как формула массива. Следовательно, нужно нажать комбинацию клавиш Ctrl + Shift + Enter вместо простого нажатия клавиши ввода. Но есть некоторые исключения, при которых эта функция не будет работать. Нужно предварительно убедиться в том, что язык по умолчанию для программ не в кодировке Unicode стоит русский. В этом случае проблем возникнуть не должно. Эти формулы имеют некоторые отличия между собой. Вместо 33 букв последняя формула применяет только 32. То есть, она не учитывает букву ё, как кириллическую.

В этом случае, аналогично, как и в предыдущем, для поиска нужных символов с учетом регистра, необходимо использовать функцию НАЙТИ. Поэтому можно искать, к примеру, половину алфавита, записанную маленькими буквами и половину, записанную большими. Аргументы те же самые.

Как найти слова в ячейке, которые содержат кириллицу и латиницу

Мы можем логически сделать вывод, что для поиска тех слов, которые содержат и кириллицу, и латиницу, нужно использовать в качестве того, что мы ищем, все символы русского и английского алфавитов.

Как найти в ячейке заглавные буквы

Чтобы найти заглавные буквы, необходимо воспользоваться функцией НАЙТИ, а в качестве аргументов указать заглавные кириллические буквы (или элементы латинского алфавита, если нужно найти их) или же их коды.

При поиске кириллических букв через коды нужно помнить о том, что предварительно таблица ASCII должна быть настроена на русский язык. Простыми словами, чтобы стояла русская локализация.

Если же нужно найти какие-угодно заглавные буквы, независимо от алфавита, в котором их надо искать, нужно использовать функции СТРОЧН и СОВПАД. Последовательность действий следующая:

  1. Делаем нижний регистр значений в отдельной ячейке.
  2. Сравниваем результаты с первоначальными.
  3. После этого используем следующую формулу: =НЕ(СОВПАД(СТРОЧН(A1);A1))

Если эти ячейки не совпадают, это говорит о том, что какой-то из символов в изначальной ячейке был в верхнем регистре.

Поиск символов в Excel при помощи регулярных выражений

Можно также воспользоваться регулярными выражениями для того, чтобы найти символы. Лучше всего это делать с помощью инструмента !SEMTools, поскольку он автоматизирует множество процессов их использования. Спектр использования регулярных выражений в Excel достаточно широк. Мы же остановимся прежде всего на функциях ПОИСК, ЗАМЕНИТЬ, ИЗВЛЕЧЬ.

Приятная новость: эти функции можно использовать как в Гугл таблицах, так и в Excel с этой настройкой.

Первая регулярная функция – REGEXMATCH, которая умеет проверять, похож ли этот паттерн на тот, который был в другой ячейке. Синтаксис: =REGEXMATCH(«текст»;»RegEx-паттерн для поиска»). Эта функция возвращает одно из двух значений: истинное или ложное. Что именно – зависит от того, действительно ли наблюдается соответствие или нет. Вторая функция – =REGEXEXTRACT(«текст»;»RegEx-паттерн для поиска») Она позволяет извлечь нужные символы из строки.

При этом данная функция имеет небольшие отличия от Google Таблиц. Заключается оно в том, что последние в случае ненахождения заданного текста возвращают ошибку, в то время как эта надстройка показывает лишь пустое значение.

Ну и наконец, нужно воспользоваться этой формулой для того, чтобы заменить текст: =REGEXREPLACE(«текст»;»RegEx-паттерн для поиска»;»текст, которым заменяем найденное»).

Что делать с найденными символами

Хорошо. Предположим, мы нашли символы. А что с ними можно делать дальше? Здесь есть несколько возможных вариантов, как можно поступить. Например, можно их удалить. Например, если мы среди кириллических значений нашли латиницу. Также можно заменить ее на аналогичный символ, только в кириллице (например, большую английскую М на русскую М) или же извлечь этот символ для использования в другой формуле.

Удаление лишних символов в Excel

Существует множество способов, как убрать ненужные знаки в Excel. Как один из вариантов – использование функции «Найти и заменить», где заменить тот символ, который нужно убрать, на пустую строку “». Можно воспользоваться теми же регулярными выражениями, которые используются для замены найденного символа.

Извлечение определенных символов в Excel

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

Изменение символов в Excel

Процедура такая же самая, как и удаление, только искомый символ нужно заменять на другой знак (в том числе, и на непечатаемый), а не писать в соответствующем аргументе пустую строку.

Оцените качество статьи. Нам важно ваше мнение:

Skip to content

Как быстро извлечь число из текста в Excel

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

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

Вот что мы рассмотрим в этой статье:

  • Как извлечь число в конце текста
  • Получаем число из начала текста
  • Как извлечь все числа из текста
  • Извлекаем числа без формул при помощи Ultimate Suite

Когда дело доходит до извлечения части текстового значения заданной длины, Эксель предоставляет три текстовых функции (ЛЕВСИМВ, ПРАВСИМВ и ПСТР) для быстрого выполнения этой задачи. А вот когда дело доходит до извлечения числа из буквенно-цифровой строки, Microsoft Excel … не предоставляет ничего.

Чтобы извлечь число из текста в Excel, требуется немного изобретательности, немного терпения и множество различных функций, вложенных друг в друга. 

Или вы можете запустить инструмент «Извлечь (Extract)» из надстройки Ablebits Ultimate Suite и выполнить эту операцию одним щелчком мыши. Ниже вы найдете полную информацию обо всех этих методах.

Как извлечь число из конца текстовой строки.

Если у вас есть столбец буквенно-цифровых значений, в котором число всегда идет после текста, вы можете использовать одну из следующих формул, чтобы вытащить из них числа.

Важное замечание! В приведенных ниже формулах извлечение выполняется с помощью функций ПРАВСИМВ и ЛЕВСИМВ, которые относятся к категории текстовых функций. Эти функции всегда возвращают текст. В нашем случае результатом будет числовая подстрока, которая с точки зрения Excel также является текстом, а не числом. Если вам нужно, чтобы результат был числом (которое можно использовать в дальнейших вычислениях), оберните соответствующую формулу в функцию ЗНАЧЕН, или выполните с ней простейшую математическую операцию (например, двойное отрицание).

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

=МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9}; ячейка &»0123456789″))

О логике вычислений мы поговорим чуть позже. На данный момент просто замените слово «ячейка» ссылкой на позицию, содержащую исходный текст (в нашем случае A2), и запишите получившееся выражение в любую пустую клетку той же строки, скажем, в B2:

=МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9};A2&»0123456789″))

Хотя формула содержит константу массива, это обычное выражение, которое вводится обычным способом: нажатием клавиши Enter.

Как только позиция первой цифры определена, можно использовать функцию ПРАВСИМВ для извлечения числа. Чтобы узнать, сколько символов нужно извлечь, вы вычитаете позицию первой цифры из общей длины строки и добавляете единицу к результату, потому что первая цифра также должна быть включена:

=ПРАВСИМВ(A2;ДЛСТР(A2)-B2+1)

Где A2 — исходная ячейка, а B2 — позиция первой цифры.

На следующем скриншоте показаны результаты:

Чтобы исключить вспомогательный столбец, содержащий позицию первой цифры, вы можете встроить формулу МИН непосредственно в функцию ПРАВСИМВ следующим образом:

=ПРАВСИМВ(A2;ДЛСТР(A2)-МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9};A2&»0123456789″))+1)

Чтобы формула возвращала именно число, а не числовую строку, вложите ее в функцию ЗНАЧЕН:

=ЗНАЧЕН(ПРАВСИМВ(A2;ДЛСТР(A2)-МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9};A2&»0123456789″))+1))

Или просто примените двойное отрицание, использовав два знака «минус»:

=—ПРАВСИМВ(A2;ДЛСТР(A2)-МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9};A2&»0123456789″))+1)

Другой способ извлечь число из конца строки — использовать вот такое выражение:

=ПРАВСИМВ( ячейка ;СУММ(ДЛСТР( ячейка ) — ДЛСТР(ПОДСТАВИТЬ( ячейка ; {«0″;»1″;»2″;»3″;»4″;»5″;»6″;»7″;»8″;»9″};»»))))

Используя исходный текст в A2, вы записываете приведенную ниже формулу в B2 или любую другую пустую ячейку в той же строке, а затем копируете её вниз по столбцу:

=ПРАВСИМВ(A2;СУММ(ДЛСТР(A2) — ДЛСТР(ПОДСТАВИТЬ(A2; {«0″;»1″;»2″;»3″;»4″;»5″;»6″;»7″;»8″;»9″};»»))))

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

Этих недостатков не имеет третья формула, которая извлекает только последнее число в тексте, игнорируя все предыдущие:

=ПРАВСИМВ(A2; ДЛСТР(A2) — МАКС(ЕСЛИ(ЕЧИСЛО(ПСТР(A2; СТРОКА(ДВССЫЛ( «1:»&ДЛСТР(A2))); 1) *1)=ЛОЖЬ; СТРОКА(ДВССЫЛ( «1:»&ДЛСТР(A2))); 0)))

На скриншоте ниже вы видите результат ее работы.

Как видите, цифры в начале или в середине текста игнорируются. Также обратите внимание, что результатом, как и в предыдущих формулах, является число, записанное в виде текста. Как превратить его в нормальное число, мы уже рассмотрели выше в этой статье.

Примечание. Если вы используете Excel 2019 или более ранние версии, нужно использовать формулу массива, нажав при вводе комбинацию Ctrl+Shift+Enter. Если у вас Office365, вводите как обычно, через Enter.

Как извлечь число из начала текстовой строки

Если вы работаете со строками, в которых текст находится после числа, решение для извлечения числа будет аналогично описанному выше. С той только разницей, что вы используете функцию ЛЕВСИМВ для извлечения из левой части текста:

=ЛЕВСИМВ( ячейка ;СУММ(ДЛСТР( ячейка )-ДЛСТР(ПОДСТАВИТЬ( ячейка ;{«0″;»1″;»2″;»3″;»4″;»5″;»6″;»7″;»8″;»9″};»»))))

Используя этот метод для A2, извлекаем число при помощи такого выражения:

=ЛЕВСИМВ(A2;СУММ(ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;{«0″;»1″;»2″;»3″;»4″;»5″;»6″;»7″;»8″;»9″};»»))))

Это решение работает для текстовых выражений, которые содержат числа только в начале. Если некоторые цифры также находятся в середине или в конце строки, формула не будет работать. 

Если вы хотите извлечь только числа слева и игнорировать остальные, воспользуйтесь другой формулой:

=ЛЕВСИМВ(A2;ПОИСКПОЗ(ЛОЖЬ;ЕЧИСЛО(—ПСТР(A2;СТРОКА($1:$94);1));0)-1)

Или чуть модифицируем, чтобы ускорить расчеты:

=ЛЕВСИМВ(A2; ПОИСКПОЗ(ЛОЖЬ; ЕЧИСЛО(ПСТР(A2; СТРОКА(ДВССЫЛ( «1:»&ДЛСТР(A2)+1)); 1) *1); 0) -1)

Если у вас Excel 2019 и ниже, вводите ее как формулу массива, используя Ctrl+Shift+Enter. В Office365 и выше можно вводить как обычно.

Примечание. Как и в случае с функцией ПРАВСИМВ, функция ЛЕВСИМВ также возвращает числовую подстроку, которая технически является текстом, а не числом.

Как получить число из любой позиции в тексте

Если ваша задача подразумевает извлечение числа из любого места строки, вы можете использовать следующую формулу:

=СУММПРОИЗВ(ПСТР(0&A2; НАИБОЛЬШИЙ(ИНДЕКС(ЕЧИСЛО(—ПСТР(A2; СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2))); 1)) * СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2))); 0); СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2))))+1; 1) * 10^СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2)))/10)

Где A2 — исходная текстовая строка.

Для пояснения, как это работает, потребуется отдельная статья. Поэтому вы можете просто скопировать на свой рабочий лист, чтобы убедиться, что это действительно работает :)

Обратите внимание, что в этом случае в тексте могут находиться несколько чисел. Все они будут извлечены и объединены в единое целое.

Однако, изучив результаты, вы можете заметить один незначительный недостаток: если исходный текст в ячейке не содержит числа, формула возвращает ноль, как в строке 7 на скриншоте выше. Чтобы исправить это, вы можете заключить формулу в оператор ЕСЛИ, который проверит, содержит ли исходный текст какое-либо число. Если это так, формула извлекает это число, в противном случае возвращает пустую строку:

=ЕСЛИ(СУММ(ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;{«0″;»1″;»2″;»3″;»4″;»5″;»6″;»7″;»8″;»9″};»»)))>0; СУММПРОИЗВ(ПСТР(0&A2; НАИБОЛЬШИЙ(ИНДЕКС(ЕЧИСЛО(—ПСТР(A2; СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2))); 1)) * СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2))); 0); СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2))))+1; 1) * 10^СТРОКА(ДВССЫЛ(«1:»&ДЛСТР(A2)))/10);»»)

В отличие от всех предыдущих примеров, результатом этих формул является число. Чтобы убедиться в этом, просто обратите внимание на выровненные по правому краю значения в столбце B и усеченные ведущие нули (например, 88 вместо 088).

Если число, которое вы хотите извлечь, ограничено какими-то знаками-разделителями, то можно использовать функцию ПСТР. Рассмотрим пример, как получить номер счета из текста платежа.

Мы будем искать позицию знака «№» и позицию следующего за ним первого пробела. То, что находится между ними, как раз и будет номером счёта:

=ПСТР(ПОДСТАВИТЬ(A2;» «;»»);НАЙТИ(«№»;ПОДСТАВИТЬ(A2;» «;»»))+1;НАЙТИ(» «;A2;НАЙТИ(«№»;A2;1))-НАЙТИ(«№»;A2;1)-1)

На скриншоте ниже вы видите, как это работает.

Вот еще один возможный вариант вынимания числа из текста. Необходимо извлечь первое встретившееся число из текста.

Используем формулу

=ПРОСМОТР(2^64;—ЛЕВСИМВ(ПСТР(A1&»_0″;МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1&»_0123456789″));15); {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}))

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

=ПРОСМОТР(2^64;—ЛЕВСИМВ(ПСТР(A1&»_0″;МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1&»_0123456789″));15); СТРОКА($A$1:$IV$16)))

Как видите, получаем только первое число, независимо от его расположения:

И еще один пример. Давайте попробуем достать все числа из текста, разграничив их каким-то разделителем. Например, дефисом “-“.

В этом случае придется использовать формулу массива:

{=ПОДСТАВИТЬ(СЖПРОБЕЛЫ(СЦЕП(ЕСЛИ(ЕЧИСЛО(—ПСТР(A2;СТРОКА($1:$94);1));ПСТР(A2;СТРОКА($1:$94);1);» «)));» «;»-«)}

Мы нашли все числа в тексте, как вы видите на скриншоте ниже:

Откорректировав эту формулу, вы можете использовать любой другой разделитель.

Поскольку между ними есть разделители, то вы легко можете распределить эти числа в отдельные ячейки. Как это сделать — читайте в материале 8 способов разделить ячейку Excel на две или несколько.

Как выделить число из текста с помощью Ultimate Suite

Как вы только что видели, не существует простой и понятной формулы Excel для извлечения чисел из текстовой строки. Если у вас есть трудности с пониманием формул или их настройкой для ваших наборов данных, вам может понравиться этот простой способ получить число из текста в Excel.

С надстройкой Ultimate Suite, добавленной на вашу ленту Excel, вы можете быстро получить число из любой буквенно-цифровой строки:

  1. Перейдите на вкладку Ablebits Data > Text и нажмите Извлечь (Extract) :

  1. Выделите все ячейки с данными, которые нужно обработать.
  2. На панели инструмента «Извлечь (Extract)» установите переключатель «Извлечь числа (Extract numbers)».
  3. В зависимости от того, хотите ли вы, чтобы результаты были формулами или значениями, выберите поле «Вставить как формулу (Insert as formula)» или оставьте его пустым (по умолчанию).

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

  1. Нажмите кнопку «Вставить результаты (Insert Results)». Готово!

Как и в предыдущем примере, результаты извлечения являются числами. Это означает, что вы можете подсчитывать, суммировать, усреднять или выполнять любые другие вычисления с ними.

Если установлен флажок «Вставить как формулу», вы увидите выражение в строке формул. Любопытно узнать, какое именно? Просто скачайте пробную версию Ultimate Suite и убедитесь сами :)

Если вы хотите иметь это, а также еще более 60 полезных инструментов в Excel, воспользуйтесь этой надстройкой.

Я постарался дать вам максимально полные рекомендации, какими способами можно извлечь число из текста. Конечно, они не могут охватить все возможные случаи. Поэтому если встретилось что-то особенно заковыристое — не стесняйтесь писать в комментариях. Постараюсь помочь по мере сил.

Как быстро посчитать количество слов в Excel В статье объясняется, как подсчитывать слова в Excel с помощью функции ДЛСТР в сочетании с другими функциями Excel, а также приводятся формулы для подсчета общего количества или конкретных слов в…
Как умножить число на процент и прибавить проценты Ранее мы уже научились считать проценты в Excel. Рассмотрим несколько случаев, когда известная нам величина процента помогает рассчитать различные числовые значения. Чему равен процент от числаКак умножить число на процентКак…
Как считать проценты в Excel — примеры формул В этом руководстве вы познакомитесь с быстрым способом расчета процентов в Excel, найдете базовую формулу процента и еще несколько формул для расчета процентного изменения, процента от общей суммы и т.д.…
Функция ПРАВСИМВ в Excel — примеры и советы. В последних нескольких статьях мы обсуждали различные текстовые функции. Сегодня наше внимание сосредоточено на ПРАВСИМВ (RIGHT в английской версии), которая предназначена для возврата указанного количества символов из крайней правой части…
Функция ЛЕВСИМВ в Excel. Примеры использования и советы. В руководстве показано, как использовать функцию ЛЕВСИМВ (LEFT) в Excel, чтобы получить подстроку из начала текстовой строки, извлечь текст перед определенным символом, заставить формулу возвращать число и многое другое. Среди…
5 примеров с функцией ДЛСТР в Excel. Вы ищете формулу Excel для подсчета символов в ячейке? Если да, то вы, безусловно, попали на нужную страницу. В этом коротком руководстве вы узнаете, как использовать функцию ДЛСТР (LEN в английской версии)…
Как быстро сосчитать количество символов в ячейке Excel В руководстве объясняется, как считать символы в Excel. Вы изучите формулы, позволяющие получить общее количество символов в диапазоне и подсчитывать только определенные символы в одной или нескольких ячейках. В нашем предыдущем…

Недавно мы рассмотрели как можно вернуть из строки только буквы, исключив цифры. Теперь же мы рассмотрим обратную ситуацию, когда из строки нам необходимо вернуть только цифры, исключив текстовую информацию.

Задача все та же — у нас есть столбец с данными (и текс и цифры) и нам требуется разбить отдельно текст и отдельно цифры. Как мы писали выше с текстом мы уже разобрались, осталось вытащить цифры.

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

Встроенной функции для этих целей в Excel так же нет, поэтому мы будем писать пользовательскую.

Public Function GetNumbers(TargetCell As Range) As String
 Dim LenStr As Long
 For LenStr = 1 To Len(TargetCell)
 Select Case Asc(Mid(TargetCell, LenStr, 1))
 Case 48 To 57
 GetNumbers = GetNumbers & Mid(TargetCell, LenStr, 1)
 End Select
 Next
End Function

Как пользоваться?

Открываем редактор VBA в Excel (Alt+F11), или правой кнопкой по листу и выбираем пункт «Исходный текст».

Создаем новый модуль → Insert → Module

Переключаемся на российскую раскладку клавиатуры, копируем код, указанный выше и вставляем в модуль

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

=GetNumbers(A1)

и протягиваем ее вниз

Как получить из строки только цифры в Excel - пользовательская функция

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Еще…Меньше

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

Для поиска текста также можно использовать фильтр. Дополнительные сведения см. в теме Фильтрация данных.

Поиск ячеек, содержащих текст

Чтобы найти ячейки, содержащие определенный текст, выполните указанные здесь действия.

  1. Вы диапазон ячеек, в которые нужно в поиске.

    Чтобы найти результат поиска на всем из них, щелкните любую ячейку.

  2. На вкладке Главная в группе Редактирование нажмите кнопку Найти и & выберите, а затем нажмите кнопку Найти.

    Параметр "Найти" на ленте

  3. В поле Найти введите текст (или числа), который нужно найти. Вы также можете выбрать недавний поиск в поле Найти.

    Примечание: В условиях поиска можно использовать поддеревные знаки.

  4. Чтобы указать формат поиска, нажмите кнопку Формат и сделайте выбор во всплыващем окне Найти формат.

  5. Нажмите кнопку Параметры, чтобы дополнительно определить поиск. Например, можно найти все ячейки, содержащие данные одного типа, например формулы.

    В поле Внутри можно выбрать лист или книгу для поиска на листе или во всей книге.

  6. Нажмите кнопку Найти все или Найти далее.

    В списке Найти все перечислены все вхождения элемента, которые необходимо найти, и можно сделать ячейку активной, выбрав определенное вхождение. Вы можете отсортировать результаты поиска Найти все, щелкнув заглавную кнопку.

Примечание:  Чтобы остановить поиск, нажмите клавишу ESC.

Проверьте, есть ли в ячейке текст

Для этого используйте функцию ЕТЕКСТ.

Примеры ЕТЕКСТ

Проверка того, совпадает ли ячейка с определенным текстом

Используйте функцию ЕСЛИ для возврата результатов для заского условия.

Примеры ЕСЛИ

Проверка того, совпадает ли часть ячейки с определенным текстом

Для этого используйте функции ЕСЛИ,ПОИСКи Е ЧИСЛОЭЛЕБР.

Примечание: Функция ПОИСК не имеет чувствительность к делу.

Примеры if, ISNUMBER и SEARCH

Нужна дополнительная помощь?

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Excel содержит список списков
  • Excel создать гиперссылки на все листы
  • Excel создать выпадающие строки
  • Excel создания списка для ячеек
  • Excel создание элементов управления

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии