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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры ЕСЛИ

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

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

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

Функция ЕЧИСЛО() в EXCEL

Значение — значением может быть все что угодно: текст, число, ссылка, имя , пустая ячейка , значение ошибки, логическое выражение.

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

В файле примера приведены несколько вариантов проверок:

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

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

Вывод: функция ЕЧИСЛО() не пытается конвертировать значения в числовой формат. Однако, ее легко заставить делать это. Если в ячейке А1 число сохранено как текст, то формула = ЕЧИСЛО(—A1) вернет ИСТИНА, а = ЕЧИСЛО(A1) — ЛОЖЬ.

3. Логические значения ЛОЖЬ и ИСТИНА формально в EXCEL числами не являются и это доказывает тот факт, что формулы =ЕЧИСЛО(ЛОЖЬ) и =ЕЧИСЛО(ИСТИНА) вернут ЛОЖЬ. Однако, значениям ЛОЖЬ и ИСТИНА сопоставлены значения 0 и 1 соответственно, поэтому формулы =ЕЧИСЛО(—ЛОЖЬ) и =ЕЧИСЛО(—ИСТИНА) вернут ИСТИНА.

4. Функция ЕЧИСЛО() обычно используется в паре с функцией ЕСЛИ() . Например, формула =ЕСЛИ(ЕЧИСЛО(B6);»Число»;»Не число») вернет слово Число , если в ячейке В6 находится число (в числовом формате).

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

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

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

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

Описание

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

Пояснение

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

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

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

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

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

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

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 проверка ячейки на наличие текста присутствует в виде функции ЕТЕКСТ, но она довольно бестолковая по своей сути. Все, что проверяет функция, — это в каком формате находится содержимое ячейки. Например, в ячейке может быть пробел, число в текстовом формате или пунктуационный символ — функция во всех случаях вернет ИСТИНА. Если вас устраивает такой результат, дальше можно не читать. Но наверняка многие, когда ищут, как проверить ячейку на наличие текста, имеют в виду самый настоящий текст, ключевым признаком которого является сама текстовая информация, а не формат ячейки.

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

Для одних текст — это исключительно буквы, буквенные символы.

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

=НЕ(СОВПАД(СТРОЧН(A1);ПРОПИСН(A1)))

Логика работы довольно проста — если исходный текст в нижнем и верхнем регистре полностью совпадает, значит, букв в нем нет, т.к. функции СТРОЧН и ПРОПИСН изменяют только буквы.

Найти буквы и цифры

Однако кто-то может считать текстом ещё и цифровые символы или попросту цифры (из них ещё составляются числа – не путаем понятия :)).

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

Макрос легко найти в первой группе под названием “НАЙТИ” в меню “Символы”.

Найти буквы или цифры в Excel
Найти буквы или цифры в Excel – процедура !SEMTools

А регулярное выражение для поиска кириллицы, латиницы и цифр в ячейке выглядит так:

Найти определённые текстовые символы

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

  • Найти кириллицу;
  • Найти латиницу;
  • Найти цифры.

Для ещё более сложных случаев можно использовать процедуру “Найти ячейки по регулярному выражению” в той же группе “НАЙТИ”.

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

Смотрите также:

  • Удалить символы латиницы в Excel;
  • Удалить цифры из текста в Excel;
  • Извлечь символы латиницы в Excel;
  • Извлечь цифры из текста в Excel.

Возникла задача найти ячейки с текстом в Excel?
Скачайте надстройку !SEMTools и решите ее за считанные минуты!

Хитрости »

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


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

Вот бывает так: есть у Вас в ячейке некий текст. Допустим «Было доставлено кусков мыла 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
ссылки
статистика

Like this post? Please share to your friends:
  • Excel слова выходят за ячейку
  • Excel слова в столбик в ячейке
  • Excel слова в родительном падеже
  • Excel слова в алфавитном порядке
  • Excel слияние ячеек без потери данных