Функция excel символы до пробела

 

shooombj

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

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

Здравствуйте! Подскажите, пожалуйста, как вынести в соседний столбец символы, которые идут до первого пробела? Файл прилагаю. Операция необходима, чтобы заполнить столбец «Артикул».  

  <EM><STRONG>Файл удален</STRONG> — велик размер — [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>

 

Serge

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

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

Здравствуйте.  
Либо:  
=ЛЕВСИМВ(C6;НАЙТИ(» «;C6))  
либо макросом.

 

shooombj

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

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

 

Serge

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

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

А как в 2010 — м посмотреть размер файла не скачивая его? Я видимо косякнул, но даже проверить не могу сколько он весит не сохраняя его :)

 

vikttur

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

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

Автору срочно необходимо посетить страничку  

http://www.planetaexcel.ru/forum.php?thread_id=8735  

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

 

Serge

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

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

{quote}{login=vikttur}{date=18.09.2010 10:01}{thema=}{post}  
Сергей, я вижу размер файла еще до скачивания, когда Опера предлагает варианты дальнейших действий.{/post}{/quote}А я нет!!! Дома у меня мозилла и 2010 офис, и когда я кликаю по вложению, то оно тупо скачивается, независимо от размера :(((  
Мне это не нравится. Хотя трафик не важен (у меня дома безлимит) но я не хочу помогать нарушителям… Вот я и спрашиваю: Как размер файла увидеть раньше чем его скачал?

 

Serge

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

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

{quote}{login=Serge 007}{date=18.09.2010 10:06}{thema=Re: }{post}{quote}{login=vikttur}{date=18.09.2010 10:01}{thema=}{post}  
Сергей, я вижу размер файла еще до скачивания, когда Опера предлагает варианты дальнейших действий.{/post}{/quote}А я нет!!! Дома у меня мозилла и 2010 офис, и когда я кликаю по вложению, то оно тупо скачивается, независимо от размера :(((  
Мне это не нравится. Хотя трафик не важен (у меня дома безлимит) но я не хочу помогать нарушителям… Вот я и спрашиваю: Как размер файла увидеть раньше чем его скачал?{/post}{/quote}В 2003 это просто, там делать даже ничего не надо, это по умолчанию…

 

Serge

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

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

{quote}{login=The_Prist}{date=18.09.2010 10:08}{thema=Re: Re: }{post}{quote}{login=Serge 007}{date=18.09.2010 10:06}{thema=Re: }{post}Как размер файла увидеть раньше чем его скачал?{/post}{/quote}В Мозиле никак. Только после. Инструменты-Загрузки. Там показывается в окошке размер скачанного файла.{/post}{/quote}Ctrщё поэксперементирую,l+J? Оно мне пустое окно даёт :(((  
Ща ещё поэксперементирую, спасибо Дим!

 

Serge

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

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

{quote}{login=Serge 007}{date=18.09.2010 10:10}{thema=Re: Re: Re: }{post}}Ctrщё поэксперементирую,l+J? Оно мне пустое окно даёт :(((  
Ща ещё поэксперементирую, спасибо Дим!{/post}{/quote}Чё-то фигня какая-то, чя писал не это, и вроде не цитировал — часть правильно — часть нет :(((

 

vikttur

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

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

Это твои вирусы (все еще болеешь?) на клаву упали :)

 

vikttur

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

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

shooombj уже поспасибился и ушел.  
Не брать пробел:  
=ЛЕВСИМВ(C6;НАЙТИ(» «;C6)-1)

 

Serge

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

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

{quote}{login=vikttur}{date=18.09.2010 10:21}{thema=}{post}все еще болеешь?) на клаву упали :){/post}{/quote}Не думаю )))

 

Юрий М

Модератор

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

Контакты см. в профиле

Серж, поставь Оперу и не мучайся

 

Serge

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

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

{quote}{login=Юрий М}{date=19.09.2010 10:15}{thema=Re: Re: }{post}Серж, поставь Оперу и не мучайся{/post}{/quote}Юрий, спасибо. И Опера и Ишак есть, но мне больше годзилла нравится и по-умолчанию открывается она…

 

Юрий М

Модератор

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

Контакты см. в профиле

Тогда не спрашивай больше про предварительный просмотр размера файла :-)  
P.S. Пусть дефолтно годзилла, а Планету открывай в Опере.

 

kim

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

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

Игорь

Я тоже не вижу размер предварительно. Опера 10.53

 

Serge

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

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

{quote}{login=Юрий М}{date=19.09.2010 11:46}{thema=}{post}Тогда не спрашивай больше про предварительный просмотр размера файла :-)  
P.S. Пусть дефолтно годзилла, а Планету открывай в Опере.{/post}{/quote}Ну дык я не только на Планете… Думал что можно как-то :(((  

  ЗЫ А что, может можно установить каким браузером какой сайт открывать?

 

Юрий М

Модератор

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

Контакты см. в профиле

Я просто сделал для Оперы домашней страницей Планету.

 

vikttur

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

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

{quote}{login=kim}{date=19.09.2010 11:58}{thema=}{post}Я тоже не вижу размер предварительно. Опера 10.53{/post}{/quote}  
У меня Опера 10.61  
ЛКМ, открывается окошко «Загрузка файла — Открыть, Сохранить, Отмена, Справка».  
В верхней строке имя и размер файла.

 

Serge

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

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

{quote}{login=Юрий М}{date=19.09.2010 12:00}{thema=}{post}Я просто сделал для Оперы домашней страницей Планету.{/post}{/quote}Спс, ща поколдую :-)

 

Юрий М

Модератор

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

Контакты см. в профиле

{quote}{login=vikttur}{date=19.09.2010 12:04}{thema=Re: }{post}{quote}{login=kim}{date=19.09.2010 11:58}{thema=}{post}Я тоже не вижу размер предварительно. Опера 10.53{/post}{/quote}У меня Опера 10.61  
ЛКМ, открывается окошко «Загрузка файла — Открыть, Сохранить, Отмена, Справка».  
В верхней строке имя и размер файла.{/post}{/quote}  
Аналогично.

 

{quote}{login=Serge 007}{date=19.09.2010 11:59}{thema=Re: }{post}{quote}{login=Юрий М}{date=19.09.2010 11:46}{thema=}{post}Тогда не спрашивай больше про предварительный просмотр размера файла :-)  
P.S. Пусть дефолтно годзилла, а Планету открывай в Опере.{/post}{/quote}  
ЗЫ А что, может можно установить каким браузером какой сайт открывать?{/post}{/quote}  
Можно — каким движком, если… установить комбайн Lunascape6 — в нем три-в-одном. По-моему появился и у других выбор.  
Z.  
19256

 

kim

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

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

Игорь

Не, у меня такого окошка нет, надо бы поколдовать с настройками…

 

Diana

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

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

{quote}{login=Serge 007}{date=19.09.2010 11:59}{thema=Re: }{post}{quote}{login=Юрий М}{date=19.09.2010 11:46}{thema=}{post}Тогда не спрашивай больше про предварительный просмотр размера файла :-)  
P.S. Пусть дефолтно годзилла, а Планету открывай в Опере.{/post}{/quote}Ну дык я не только на Планете… Думал что можно как-то :(((  

  ЗЫ А что, может можно установить каким браузером какой сайт открывать?{/post}{/quote}  

  Можно… Есть скрипт, который фильтрует URL адреса. Т.е. если Вы работаете, например, в Google Chrom, нажимаете в яндексе на

www.planetaexcel.ru

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

 

Serge

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

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

{quote}{login=Diana Tailor}{date=19.09.2010 12:12}{thema=Re: Re: }{post}  
Можно… Есть скрипт, который фильтрует URL адреса. Т.е. если Вы работаете, например, в Google Chrom, нажимаете в яндексе на

www.planetaexcel.ru

(или в закладке или где-то), открывается другой браузер.  
Не уверена, что он у меня с собой на буке есть, дома точно есть ткой скрипт.{/post}{/quote}Буду признателен. В размерах разумного :)  
Это мне больше всего подходит.  

  ЗЫ Z спасибо, но это я не осилю :(

 

Serge

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

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

{quote}{login=Diana Tailor}{date=19.09.2010 12:12}{thema=Re: Re: }{post}  
Можно… Есть скрипт, который фильтрует URL адреса. Т.е. если Вы работаете, например, в Google Chrom, нажимаете в яндексе на

www.planetaexcel.ru

(или в закладке или где-то), открывается другой браузер.  
Не уверена, что он у меня с собой на буке есть, дома точно есть ткой скрипт.{/post}{/quote}Буду признателен. В размерах разумного :)  
Это мне больше всего подходит.  

  ЗЫ Z спасибо, но это я не осилю :(

 

Diana

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

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

Сергей, насколько я поняла, у Вас Мозилла.  
тогда вот такая штучка подойдет  

https://addons.mozilla.org/ru/firefox/addon/1429/  

  к сожалению с собой на буке скриптика не оказалось :(

 

Serge

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

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

{quote}{login=Diana Tailor}{date=19.09.2010 12:27}{thema=}{post}Сергей, насколько я поняла, у Вас Мозилла.  
тогда вот такая штучка подойдет  

https://addons.mozilla.org/ru/firefox/addon/1429/  

  к сожалению с собой на буке скриптика не оказалось :({/post}{/quote}Ага, смотрю. СПС!

 

Diana

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

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

{quote}{login=Diana Tailor}{date=19.09.2010 12:27}{thema=}{post}Сергей, насколько я поняла, у Вас Мозилла.  
тогда вот такая штучка подойдет  

https://addons.mozilla.org/ru/firefox/addon/1429/  

  к сожалению с собой на буке скриптика не оказалось :({/post}{/quote}  

  либо OperaView

 

shooombj

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

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

#30

19.09.2010 19:40:25

{quote}{login=vikttur}{date=18.09.2010 10:23}{thema=}{post}shooombj уже поспасибился и ушел.  
Не брать пробел:  
=ЛЕВСИМВ(C6;НАЙТИ(» «;C6)-1){/post}{/quote}  

  Я тут) Спасибо еще раз!

Содержание

  1. ЛЕВСИМВ, ЛЕВБ (функции ЛЕВСИМВ, ЛЕВБ)
  2. Описание
  3. Синтаксис
  4. Пример
  5. Microsoft Excel
  6. Как извлечь слова из строки таблицы Excel
  7. Извлечение первого слова из строки
  8. Извлечение последнего слова строки
  9. Извлечение всего, кроме первого слова строки
  10. ЛЕВСИМВ
  11. Что делает ЛЕВСИМВ?
  12. Синтаксис
  13. Форматирование
  14. Примеры
  15. Пример 1 – извлечь первое слово
  16. Пример 2 – извлечь кроме последнего символа
  17. Пример 3 – извлечь текст до первой цифры (формула массива)
  18. Как получить слово после последнего пробела

ЛЕВСИМВ, ЛЕВБ (функции ЛЕВСИМВ, ЛЕВБ)

В этой статье описаны синтаксис и использование функций ЛЕВСИМВ и ЛЕВБ в Microsoft Excel.

Описание

Функция ЛЕВСИМВ возвращает первый символ или несколько первых символов текстовой строки на основе заданного числа символов.

Функция ЛЕВБ возвращает первый символ или несколько первых символов текстовой строки на основе заданного числа байтов.

Эти функции могут быть доступны не на всех языках.

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

К языкам, поддерживающим БДЦС, относятся японский, китайский (упрощенное письмо), китайский (традиционное письмо) и корейский.

Синтаксис

Аргументы этих функций описаны ниже.

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

Количество_знаков Необязательный. Количество символов, извлекаемых функцией ЛЕВСИМВ.

«Количество_знаков» должно быть больше нуля или равно ему.

Если «количество_знаков» превышает длину текста, функция ЛЕВСИМВ возвращает весь текст.

Если значение «количество_знаков» опущено, оно считается равным 1.

Количество_байт Необязательный. Количество символов, извлекаемых функцией ЛЕВБ.

Пример

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу Enter. При необходимости измените ширину столбцов, чтобы видеть все данные.

Источник

Microsoft Excel

трюки • приёмы • решения

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

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

Извлечение первого слова из строки

Чтобы извлечь первое слово из строки, формула должна найти позицию первого символа пробела, а затем использовать эту информацию в качестве аргумента для функции ЛЕВСИМВ. Следующая формула делает это: =ЛЕВСИМВ(A1;НАЙТИ(» «;A1)-1) .

Эта формула возвращает весь текст до первого пробела в ячейке A1. Однако у нее есть небольшой недостаток: она возвращает ошибку, если текст в ячейке А1 не содержит пробелов, потому что состоит из одного слова. Несколько более сложная формула решает проблему с помощью новой функции ЕСЛИОШИБКА, отображая все содержимое ячейки, если произошла ошибка:
=ЕСЛИОШИБКА(ЛЕВСИМВ(A1;НАЙТИ(» «;A1)-1);A1) .

Если вам нужно, чтобы формула была совместима с более ранними версиями Excel, вы не можете использовать ЕСЛИОШИБКА. В таком случае придется обойтись функцией ЕСЛИ и функцией ЕОШ для проверки на ошибку:
=ЕСЛИ(ЕОШ(НАЙТИ(» «;A1));A1;ЛЕВСИМВ(A1;НАЙТИ(» «;A1)-1))

Извлечение последнего слова строки

Извлечение последнего слова строки — более сложная задача, поскольку функция НАЙТИ работает только слева направо. Таким образом, проблема состоит в поиске последнего символа пробела. Следующая формула, однако, решает эту проблему. Она возвращает последнее слово строки (весь текст, следующий за последним символом пробела):
=ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(«*»;ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;»»;»»)))))

Но у этой формулы есть такой же недостаток, как и у первой формулы из предыдущего раздела: она вернет ошибку, если строка не содержит по крайней мере один пробел. Решение заключается в использовании функции ЕСЛИОШИБКА и возврате всего содержимого ячейки А1, если возникает ошибка:
=ЕСЛИОШИБКА(ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(«*»;ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»)))));A1)

Следующая формула совместима со всеми версиями Excel:
=ЕСЛИ(ЕОШ(НАЙТИ(» «;A1));A1;ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(«*»;ПОДСТАВИТЬ(A1;»»;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))))))

Извлечение всего, кроме первого слова строки

Следующая формула возвращает содержимое ячейки А1, за исключением первого слова:
=ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(» «:A1;1)) .
Если ячейка А1 содержит текст 2008 Operating Budget, то формула вернет Operating Budget.

Формула возвращает ошибку, если ячейка содержит только одно слово. Следующая версия формулы использует функцию ЕСЛИОШИБКА, чтобы можно было избежать ошибки; формула возвращает пустую строку, если ячейка не содержит более одного слова:
=ЕСЛИОШИБКА(ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(» «;A1;1));»»)

А эта версия совместима со всеми версиями Excel:
=ЕСЛИ(ЕОШ(НАЙТИ(» «;A1));»»;ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(» «;A1;1)))

Источник

ЛЕВСИМВ

Раздел функций Текстовые
Название на английском LEFT
Волатильность Не волатильная
Похожие функции ПРАВСИМВ, ПСТР

Что делает ЛЕВСИМВ?

Возвращает первые N символов текста слева.

Синтаксис

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

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

Если он равен нулю – возвращается пустая строка.

Если указывается отрицательное число, возвращается ошибка #ЗНАЧ.

Форматирование

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

Поэтому для корректного текстового извлечения части символов из дат в числовом формате может понадобиться функция ТЕКСТ (см. пример на картинке выше).

Примеры

Рассмотрим примеры использования функции ЛЕВСИМВ на практике.

Пример 1 – извлечь первое слово

В этом простейшем примере извлекаем первое слово в ячейке с помощью комбинации функций ЛЕВСИМВ и НАЙТИ.

Таблица выше была использована для извлечения имени из строки с именем и фамилией. Функция НАЙТИ используется для определения положения пробела между именем и фамилией. Следовательно, длина имени – это позиция пробела минус один символ.
Функция ЛЕВСИМВ извлекает имя на основе его длины.

А как извлечь фамилию (второе слово)? Ответ на этот вопрос смотрите в описании функции ПРАВСИМВ.

Пример 2 – извлечь кроме последнего символа

В комбинации ЛЕВСИМВ с функцией ДЛСТР извлекаем из строк переменной длины все, кроме последнего знака.

Вычисляем длину строки, вычитаем из нее 1 и возвращаем соответствующее количество символов функцией ЛЕВСИМВ

Пример 3 – извлечь текст до первой цифры (формула массива)

В каталоге освещения название коллекции всегда представлено текстовым обозначением. Артикул конкретного товара при этом всегда начинается с цифр. Задача – извлечь из названия конкретного товара его коллекцию без артикула.

Получается, задача состоит в том, чтобы извлечь символы до любой первой цифры. Сделаем это с помощью комбинации ЛЕВСИМВ с функциями МИН и ПОИСК.

Формула заимствует механику из первого примера, но является формулой массива и выглядит следующим образом:

Так будет выглядеть формула для ячейки A1.

При этом вводится сочетанием Ctrl + Shift + Enter как любая формула массива.

Как работает формула:

  1. Функция ПОИСК ищет одновременно 10 цифр, перечисленных в массиве, и возвращает массив позиций
  2. Поскольку часть цифр при поиске возвращают ошибку, используется функция ЕСЛИОШИБКА, чтобы для таких значений вернуть заведомо наибольшее число (в данном случае 1000)
  3. Функция МИН возвращает наименьшее из чисел – это и будет позиция первой цифры в строке
  4. Поскольку перед цифрами также всегда присутствует пробел, вычитается 2 символа, а не 1. Можно перестраховаться на случай отсутствия пробелов – оставить 1 и убрать пробелы функцией СЖПРОБЕЛЫ.
  5. Функция ЛЕВСИМВ возвращает текст до вычисленной таким образом позиции последнего знака, идущего перед первой цифрой и пробелом перед ней.

Предыдущая статья о формулах массива:

Учимся формулам массива 2/4:

Следующая статья о формулах массива:

Учимся формулам массива 4/4:

Понравилась статья? Поддержите ее автора!
Набор инструментов !SEMTools поможет решить множество задач без ввода сложных формул и сэкономит ваше время. И вам полезно, и автору приятно!

Источник

Как получить слово после последнего пробела

Получить слово до первого пробела достаточно просто:
=ПСТР( A1 ;1;НАЙТИ(» «; A1 )-1)
=MID(A1,1,FIND(» «,A1)-1)
Но куда чаще сложности возникают с получением слова(символа), находящегося на определенной позиции между пробелом. Я беру в качестве примера пробел, но на самом деле это может быть абсолютно любой символ. Например, для получения второго слова(т.е. между первым и вторым пробелом), можно составить такую формулу:
=ПСТР( A1 ;НАЙТИ(» «; A1 )+1;НАЙТИ(» «; A1 ;НАЙТИ(» «; A1 )+1)-НАЙТИ(» «; A1 )-1)
=MID(A1,FIND(» «,A1)+1,FIND(» «,A1,FIND(» «,A1)+1)-FIND(» «,A1)-1)
На мой взгляд, выглядит несколько закручено, хотя все не так уж сложно:

  • НАЙТИ(» «; A1 )+1 — ищем позицию первого пробела в ячейке A1
  • НАЙТИ(» «;A1;НАЙТИ(» «; A1 )+1) — ищем позицию второго пробела и затем из этой позиции вычитаем позицию первого пробела( -НАЙТИ(» «; A1 ) )

Но есть проблема — если второго пробела нет, то формула выдаст ошибку #ЗНАЧ! (#VALUE!) . Тогда придется еще и проверку на ошибку делать, что явно не добавит формуле элегантности. А если надо не второе слово, а третье, пятое? Поэтому я предпочитаю использовать такую формулу:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(» «&ПОДСТАВИТЬ( A1 ;» «;ПОВТОР(» «;999));1;999*2);999);» «;»»)
=SUBSTITUTE(RIGHT(MID(» «&SUBSTITUTE(A1,» «,REPT(» «,999)),1,999*2),999),» «,»»)
На первый взгляд куда кошмарнее, чем первая. Но у неё есть ряд преимуществ:
— она не нуждается в проверке на отсутствие пробелов
— изменением одного числа можно получить не второе, а 3-е, 4-е и т.д. слово.

Разберем основные моменты использования этой формулы. Во-первых: формула вытаскивает второе слово от начала строки. Во-вторых: чтобы получить первое слово от начала строки, нужно в блоке 999*2 заменить 2 на 1:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(» «&ПОДСТАВИТЬ( A1 ;» «;ПОВТОР(» «;999));1;999*1);999);» «;»»)
=SUBSTITUTE(RIGHT(MID(» «&SUBSTITUTE(A1,» «,REPT(» «,999)),1,999*1),999),» «,»»)
Чтобы получить 5-е слово — меняем на 5:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(» «&ПОДСТАВИТЬ( A1 ;» «;ПОВТОР(» «;999));1;999*5);999);» «;»»)
=SUBSTITUTE(RIGHT(MID(» «&SUBSTITUTE(A1,» «,REPT(» «,999)),1,999*5),999),» «,»»)
Т.е. число — это позиция слова(или слов) между пробелами. А что будет, если мы укажем число больше, чем есть пробелов в строке?

А это как раз ТО, К ЧЕМУ ШЛИ — СЛОВО ПОСЛЕ ПОСЛЕДНЕГО ПРОБЕЛА
Если вдруг число будет больше, чем есть пробелов в строке — то мы получим слово после последнего пробела (т.е. первое слово с конца строки). Это значит, что если указать, например, *999 — в большинстве случаев получим как раз последнее слово.

Как это работает:
для примера возьмем текст «мама мыла раму» и формулу по получению второго слова от начала:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(» «&ПОДСТАВИТЬ( A1 ;» «;ПОВТОР(» «;999));1;999*2);999);» «;»»)
=SUBSTITUTE(RIGHT(MID(» «&SUBSTITUTE(A1,» «,REPT(» «,999)),1,999*2),999),» «,»»)

  • Сначала при помощи функции ПОДСТАВИТЬ (SUBSTITUTE) мы заменяем все пробелы в тексте на 999 пробелов(999 получаем при помощи функции ПОВТОР (REPT) . Число может быть и меньше 999, но не должно быть меньше длины исходной строки. В итоге мы получим очень длинную строку, в которой каждое слово будет отделено от другого 999 пробелами. Что-то вроде такого(пробелов я поставил меньше, конечно):
    «мама____________________________мыла____________________________раму»
  • Далее при помощи функции ПСТР (MID) мы берем все слова от начала строки, до символа на позиции 999*2. Т.е. из текста выше мы получим слова «мама» и «мыла» и по 999 символов после каждого:
    «мама____________________________мыла____________________________»
  • Затем при помощи функции ПРАВСИМВ (RIGHT) получаем 999 символов справа от строки. Т.е. только наше слово и куча пробелов после него
    «мыла____________________________»
  • И напоследок та же функция ПОДСТАВИТЬ (SUBSTITUTE) убирает более не нужные нам пробелы, заменяя их все на пустую строку — «» .

Вроде бы достигли того, что нам нужно было. Но вдруг необходимо получить второе слово с конца строки? А если у нас этих слов десятки? Можно использовать некую модификацию приведенной выше формулы, но которая как раз возвращает слово с конца строки:
=ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ(» «&ПОДСТАВИТЬ( A1 ;» «;ПОВТОР(» «;999));999*1);1;999);» «;»»)
=SUBSTITUTE(MID(RIGHT(» «&SUBSTITUTE(A1,» «,REPT(» «,999)),999*1),1,999),» «,»»)
Принцип тот же: если в блоке 999*1 заменить 1 на 5, то получим 5-е слово с конца строки.
Если необходимо выдергивать слова именно по пробелам, то лучше дополнить еще одной функцией — СЖПРОБЕЛЫ (TRIM) , чтобы отсечь лишние пробелы в начале и в конце строки и оставить только одиночные пробелы между словами:

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

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

Тогда для получения второй строки( ТЦ Таганка и ТЦ Опус ) можно применить такую формулу:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(СИМВОЛ(10)&ПОДСТАВИТЬ( C2 ;СИМВОЛ(10);ПОВТОР(СИМВОЛ(10);999));1;999*2);999);СИМВОЛ(10);»»)
СИМВОЛ(10) здесь означает перенос строки. Обычно эти переносы делаются с клавиатуры. Входим в режим редактирования ячейки, ставим курсор в нужное место строки и нажимаем Alt+Enter.
я для получения месяцев( Август 2015 г. и Сентябрь 2015 г. ) — такую:
=ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ(«/»&ПОДСТАВИТЬ( C2 ;»/»;ПОВТОР(«/»;999));999*1);1;999);»/»;»»)
В этой формуле в качестве разделителя используется слеш «/».

Разбор основных параметров формулы для применения в своих файлах
По сути, после нескольких примеров, основной принцип должен быть понятен. Но все же на примере последней формулы напомню про основные моменты и что надо сделать, чтобы применить практически к любой ситуации по извлечению слов:
=ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ(«/»&ПОДСТАВИТЬ( C2 ;»/»;ПОВТОР(«/»;999));999*1);1;999);»/»;»»)

  1. C2 — ячейка с текстом, последнее слово из которого надо извлечь.
  2. «/» — разделитель слов. Если для разделения слов используется не слеш, а запятая или точка — то во всей формуле, где встречается этот символ надо заменить его на нужный.
    Если лень прописывать этот символ внутри формулы несколько раз, его можно записать в отдельную ячейку(скажем, G1 ) и в формуле указать ссылку уже на эту ячейку:
    =ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ( G1 &ПОДСТАВИТЬ( C2 ; G1 ;ПОВТОР( G1 ;999));999*1);1;999); G1 ;»»)
    Теперь для изменения символа надо будет изменить его один раз в ячейке G1 и формула «вытащит» нужное слово/строку, опираясь именно на этот символ.
  3. *1 — число 1 — позиция слова с конца строки, которое необходимо «достать». 1 — первое с конца(т.е. последнее), 2 — предпоследнее и т.д.

Зная эти основные моменты достаточно будет в своем файле просто скопировать формулу выше и подставить в неё ссылку на нужную ячейку и указать требуемый разделитель.

Слово после последнего пробела.xls (29,5 KiB, 3 760 скачиваний)

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

Источник

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

  • Извлечь текст до или после пробела или запятой с формулой
  • Извлечь текст до или после пробела или запятой с помощью Kutools for Excel
  • Извлечь текст перед пробелом или после пробела или любых других разделителей

Извлечь текст до или после пробела с формулой в Excel

Вы можете быстро извлечь текст перед пробелом из списка только с помощью формулы.

Выберите пустую ячейку и введите эту формулу = ЛЕВЫЙ (A1; (НАЙТИ («»; A1,1) -1)) (A1 — первая ячейка списка, из которого вы хотите извлечь текст) и нажмите Enter кнопку.

Tips:
(1) Если вы хотите извлечь текст до или после запятой, вы можете изменить «» в »,«.
(2) Если вы хотите извлечь текст только после пробела, используйте эту формулу = MID (A1; НАЙТИ («»; A1) +1,256).
(3) Этот метод извлекает текст по первому пробелу в указанных ячейках. Если в ячейке имеется несколько пробелов, например «Кэти Джей Джеймс», формула = MID (A1; НАЙТИ («»; A1) +1,256) извлечет все символы после первого пробела.

Извлекать числа (или текст) только из одной ячейки / столбца в разные столбцы / строки

Kutools for Excel повышает его Разделить клетки утилита и поддерживает пакетное извлечение всех текстовых символов или чисел из одной ячейки / столбца в два столбца / строки.

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30-день, кредитная карта не требуется! Get It Now


Извлеките текст до или после пробела с помощью Kutools for Excel

Если вы установили Kutools for Excel, вы можете использовать его Извлечь текст утилита для быстрого извлечения текста до или после пробела только из списка.

1. Выберите список и нажмите Кутулс > Текст > Извлечь текст. Смотрите скриншот:

2. Во всплывающем диалоговом окне введите * и пространство в Текст поле, нажмите Добавить кнопку, только отметьте это новое добавленное правило в Извлечь список и нажмите Ok кнопку.
Функции: Если вы хотите извлечь текст только после пробела, введите пространство и следуйте * в Текст box на этом этапе.

3. В другом всплывающем диалоговом окне укажите адрес первой ячейки диапазона назначения, в который будут выводиться извлеченные данные, и нажмите OK кнопка. До сих пор вы можете видеть только тексты до извлечения пробела.
     
Внимание: Если вы хотите извлечь текст до или после запятой, вы можете ввести *, or ,* в Текст пунктом.


Извлекать текст перед пробелом и после пробела / запятой по отдельности одновременно

Kutools for Excel поддерживает другую утилиту Разделить ячейку утилита, которая помогает нам извлекать текст перед пробелом / запятой и текст после пробела / запятой и выводить их в разные ячейки. Пожалуйста, сделайте следующее:

1. Выберите список текстовых строк, из которых вы будете извлекать текст, и щелкните значок Кутулс > Текст > Разделить клетки.

2. В открывшемся диалоговом окне Split Cells укажите тип разделения в поле Тип раздел, отметьте один разделительный разделитель в Разделить на и нажмите Ok кнопка. Смотрите скриншот выше:
В нашем случае мы проверяем Разделить на столбцы вариант и Space и нажмите Ok кнопка. И теперь список текстовой строки разделен на столбцы или строки в зависимости от места. Смотрите скриншот ниже:

Внимание: Если вам нужно извлечь текст до или после запятой, проверьте Другое в первом диалоговом окне «Разделить ячейки» и введите запятую «,» в поле ниже.


Демонстрация: извлечение текста до или после пробела, запятой или других разделителей с помощью Kutools for Excel


Относительные статьи:


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (31)


Оценок пока нет. Оцените первым!

На чтение 12 мин. Просмотров 18.3k.

VBA Instr

Функция VBA InStr является одной из наиболее часто используемых функций в VBA. Он используется для нахождения текста внутри строки и действительно отлично справляется с работой.

Тем не менее, она часто используется, чтобы помочь извлечь часть строки, и эту задачу она выполняет плохо.

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

Содержание

  1. Краткое руководство к статье
  2. Краткая справка
  3. Введение
  4. Когда VBA InStr, Left, Right и Mid полезны
  5. Работа со строками различной длины
  6. Использование функции VBA InStr с Mid
  7. Функция Split
  8. Пример 1: Получение части имени файла
  9. Пример 2: диапазон IP-адресов
  10. Пример 3. Проверьте правильность имени файла
  11. Заключение

Краткое руководство к статье

В следующей таблице приведено краткое руководство к тому, что рассматривается в этой статье.

Строка Тип Задача Как
1234ABC334 Фиксированный размер Оставить слева 4 символа Left(s,4)
1234ABC334 Фиксированный размер Оставить
справа 3
символа
Right(s,3)
1234ABC334 Фиксированный размер Оставить 5, 6, 7 символы Mid(s,5,3)
«Иван
Петрович
Сидоров»
Переменный
размер
Оставить имя Split(s,» «)(0)
«Иван
Петрович
Сидоров»
Переменный
размер
Оставить
отчество
Split(s,» «)(1)
«Иван
Петрович
Сидоров»
Переменный
размер
Оставить
фамилию
Split(s,» «)(2)
«Иван
Петрович
Сидоров»
Переменный
размер
Оставить
фамилию
Dim v As
Variant
v = Split(s, » «)
lastname= v(UBound(v))

Краткая справка

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

  • Если вы хотите узнать больше о функциях InStr или InStrRev, пожалуйста, прочитайте Поиск в строке.
  • Если вы хотите узнать больше о функциях Mid, Left или Right, посмотрите раздел Извлечение части строки.
  • Для получения дополнительной информации о функции Split проверьте Строка в массив, используя Split.
  • Оператор Like включен в Сравнение строк с шаблоном

Я использую Debug.Print в моих примерах. Он печатает значения в Immediate Window, которое вы можете просмотреть, нажав Ctrl + G (или выберите View-> Immediate Window)

Введение

В этой статье я собираюсь показать вам лучший способ извлечения символов из строки, чем использование функции VBA InStr с Left, Right или Mid.

Эта статья разбита следующим образом:

  • Раздел 1: Как извлечь из строк фиксированного размера.
  • Раздел 2: Как извлечь из строк переменного размера.
  • Раздел 3: Как извлечь из строки переменного размера, используя функцию Split.
  • Разделы с 4 по 6: некоторые примеры из реальной жизни.

Когда VBA InStr, Left, Right и Mid полезны

Если вы хотите проверить, содержит ли строка значение, InStr подходит для этой работы. Если вы хотите сделать простое извлечение, то отлично подойдут Left, Right и Mid.

Использование InStr для проверки, содержит ли строка текст

В следующем примере мы проверяем, содержит ли ФИО «Петрович». Если возвращаемое значение InStr больше нуля, то строка содержит значение, которое мы проверяем.

' Проверьте, содержит ли строка Петрович
    If InStr("Иван Петрович Сидоров", "Петрович") > 0 Then
        Debug.Print "Найдено"
    End If

Извлечение с Left, Right и Mid

Функция Left используется для получения символов слева от строки.
Функция Right используется для получения символов справа от строки.
Функция Mid используется для середины строки. Она такая же, как
Left, за исключением того, что вы даете ему стартовую позицию.

Sub IzvlechTekst()

    Dim s As String: s = "ABCD-7789.WXYZ"

    Debug.Print Left(s, 2) ' Печатает AB
    Debug.Print Left(s, 4) ' Печатает ABCD

    Debug.Print Right(s, 2) ' Печатает YZ
    Debug.Print Right(s, 4) ' Печатает WXYZ

    Debug.Print Mid(s, 1, 2) ' Печатает AB
    Debug.Print Mid(s, 6, 4) ' Печатает 7789

End Sub

VBA Left, Right and Mid

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

Используйте Left, Right или Mid, когда символы всегда будут в одной и той же позиции.

Работа со строками различной длины

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

Brooke Hilt
Pamela Jurado
Zack Kinzel
Eddy Wormley
Kaitlyn Rainer
Jacque Trickett
Kandra Stanbery
Margo Hoppes
Berenice Meier
Garrett Hyre

(Если вам нужен случайный список имен, попробуйте этот генератор случайных имен)

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

В следующем примере мы собираемся получить имя из строки. В этой строке первое имя — это имя перед первым пробелом.

Мы используем функцию VBA InStr, чтобы получить позицию первого пробела. Мы хотим получить все символы до пробела. Мы вычитаем одну из позиции, так как это дает нам позицию последней буквы имени.

Sub PoluchitImya()

    Dim s As String, lPosition As Long

    s = "John Henry Smith"
    ' Печатает John
    lPosition = InStr(s, " ") - 1
    Debug.Print Left(s, lPosition)

    s = "Lorraine Huggard"
    ' Печатает Lorraine
    lPosition = InStr(s, " ") - 1
    Debug.Print Left(s, lPosition)

End Sub

Давайте посмотрим на первый пример в приведенном выше коде. Первый пробел находится в позиции 5. Мы вычтем 1, что дает нам позицию 4. Это позиция последней буквы John, т.е.

VBA InStr and Left

Затем мы даем 4 функции Left, и она возвращает первые четыре символа, например, «John»

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

 Dim s As String
    s = "John Henry Smith"

    ' Печатает John
    Debug.Print Left(s, InStr(s, " ") - 1)

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

В этом примере мы получим последнее слово в строке, то есть Smith. Мы можем использовать функцию InStrRev. Это то же самое, что InStr, за исключением того, что поиск выполняется с конца строки.

Важно отметить, что InStrRev дает нам позицию с начала строки. Поэтому нам нужно использовать его немного иначе, чем мы использовали InStr и Left.

Sub PoluchitFamiliyu()

    Dim s As String: s = "John,Henry,Smith"
    Dim Position As Long, Length As Long

    Position = InStrRev(s, ",")
    Length = Len(s)

    ' Печатает Smith
    Debug.Print Right(s, Length - Position)

    ' Альтернативный метод. Печатает Smith - делает в одну строку
    Debug.Print Right(s, Len(s) - InStrRev(s, ","))

End Sub

Как работает приведенный выше пример:

  • Мы получаем позицию последнего пробела, используя InStrRev: 11
  • Мы получаем длину строки: 16.
  • Вычитаем позицию из длины: 16-11 = 5
  • Мы даем 5 функции Right и возвращаем Smith

VBA Instr and Right

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

В следующем примере мы получим «Henry» из строки. Слово, которое мы ищем, находится между первым и вторым пробелом.

Мы будем использовать функцию Mid здесь.

Sub PoluchitVtoroeImya()

    Dim s As String: s = "John Henry Smith"

    Dim firstChar As Long, secondChar As Long
    Dim count As Long

    ' Найти пробел плюс 1. Результат 6
    firstChar = InStr(s, " ") + 1
    ' Найти 2-й пробел. Результат 11
    secondChar = InStr(firstChar, s, " ")
    ' Получить число символов. Результат 5
    count = secondChar - firstChar

    ' Печатает Henry
    Debug.Print Mid(s, firstChar, count)

End Sub

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

VBA Instr and Mid

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

Функция Split

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

Давайте попробуем те же три примера еще раз, и на этот раз мы будем использовать Split.

  Dim s As String: s = "John Henry Smith"

    Debug.Print Split(s, " ")(0) ' John
    Debug.Print Split(s, " ")(1) ' Henry
    Debug.Print Split(s, " ")(2) ' Smith

Ого! Какая разница с использованием Split. Как это работает:

  1. Функция Split разбивает строку везде, где есть пробел.
  2. Каждый элемент помещается в массив, начиная с нуля.
  3. Используя номер местоположения, мы можем получить доступ к элементу массива.  

В следующей таблице показано, как может выглядеть массив после использования Split.

Примечание: первая позиция в массиве равна нулю. Наличие нулевых массивов является стандартным в языках программирования.

0 1 2
John Henry Smith

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

Sub SplitName()
    Dim s As String: s = "John Henry Smith"
    Dim arr() As String
    arr = Split(s, " ")

    Debug.Print arr(0) ' John
    Debug.Print arr(1) ' Henry
    Debug.Print arr(2) ' Smith
End Sub

Если вы хотите узнать больше о массивах, я написал о них целую статью под названием «Полное руководство по использованию массивов в Excel VBA».

В следующих разделах мы рассмотрим примеры из реальной жизни. Вы увидите преимущество использования Split вместо функции InStr.

Пожалуйста, не стесняйтесь попробовать это сами. Это отличный способ учиться, и вы можете повеселиться, пытаясь понять их (или, может быть, только у меня так!)

Пример 1: Получение части имени файла

Представьте, что мы хотим извлечь числа из следующих имен файлов

«VB_23476_Val.xls»
«VV_987_Val.txt»
«VZZA_12223_Val.doc»

Это похоже на пример, где мы получаем второй элемент. Чтобы получить значения здесь, мы используем подчеркивание (то есть «_»), чтобы разбить строку. Смотрите пример кода ниже:

Sub PoluchitNomer()

    ' Печатает 23476
    Debug.Print Split("VB_23476_Val.xls", "_")(1)
    ' Печатает 987
    Debug.Print Split("VV_987_Val.txt", "_")(1)
    ' Печатает 12223
    Debug.Print Split("ABBZA_12223_Val.doc", "_")(1)

End Sub

В реальном мире вы обычно читаете такие строки из разных ячеек. Допустим, эти имена файлов хранятся в ячейках от А1 до А3. Мы немного изменим приведенный выше код:

Sub ChitatNomera()

    Dim c As Range
    For Each c In Range("A1:A3")
        ' Разделите каждый элемент по мере его прочтения
        Debug.Print Split(c, "_")(1)
    Next c

End Sub

Пример 2: диапазон IP-адресов

Пример здесь взят из вопроса на веб-сайте StackOverflow.

У пользователя есть строка с IP-адресом в формате «BE-ABCDDD-DDS 172.16.23.3».

Он хочет, чтобы IP в диапазоне от 172,16 до 172,31 был действительным. Так например:

  • «BE-ABCDDD-DDS 172.16.23.3» действителен
  • «BE-ABCDDD-DDS 172.25.23.3» действителен
  • «BE-ABCDDED-DDS 172.14.23.3» не действителен
  • «BE-ABCDDDZZ-DDS 172.32.23.3» не действителен

Вот как бы я это сделал. Сначала я разбил строку по периодам. Число, которое мы ищем, находится между первым и вторым периодом. Поэтому это второй пункт. Когда мы разделяем строку, она помещается на первую позицию в массиве (помните, что массив начинается с нулевой позиции).

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

0 1 2 3
BE-ABCDDD-DDS 172 31 23 3

Код ниже показывает, как это сделать.

Sub IPAdd()

    ' Проверьте номер, чтобы проверить разные IP-адреса
    Dim s1 As String: s1 = "BE-ABCDDD-DDS 172.31.23.3"

    ' Разбить строку, используя символ точки
    Dim num As Long
    num = Split(s1, ".")(1)

    ' Проверьте правильность номера
    Debug.Print num >= 16 And num <= 31

End Sub

Пример 3. Проверьте правильность имени файла

В этом последнем примере мы хотим проверить правильность имени файла. Есть три правила.

  1. Должно заканчиваться на .pdf
  2. Он должен содержать АА
  3. Он должен содержать 1234 после А

В следующих таблицах показаны некоторые допустимые и недействительные элементы:

Имя файла Статус
AA1234.pdf Действителен
AA_ljgslf_1234.pdf Действителен
AA1234.pdf1 Недействительно — не заканчивается на .pdf
1234 AA.pdf Недействительно — АА не до 1234
12_AA_1234_NM.pdf Действителен

Сначала мы сделаем это, используя функции InStr и Right.

Sub IspInstr()

    Dim f As String: f = "AA_1234_(5).pdf"

    ' Сначала найдите АА, так как 1234 должен идти после
    Dim lPos As Long: lPos = InStr(f, "AA")
    ' Ищите 1234 и убедитесь, что последние четыре символа - .pdf
    Debug.Print InStr(lPos, f, "1234") > 0 And Right(f, 4) = ".pdf"

End Sub

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

Sub IspSravnenie()

    Dim f As String: f = "AA_1234_(5).pdf"

    ' Определить шаблон
    Dim pattern As String: pattern = "*AA*1234*.pdf"
    ' Проверьте каждый элемент по шаблону
    Debug.Print f Like pattern   ' ИСТИНА

End Sub

В приведенном выше примере звездочка в шаблоне относится к любому количеству символов.

Давайте разберем этот паттерн * AA * 1234 * .pdf

*- любая группа символов
AA — точные символы AА

*- любая группа символов
1234 — точные символы 1234

*- любая группа символов
.pdf — точные символы .pdf

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

Sub IspSravnenieTest()

    ' Создать коллекцию имен файлов
    Dim coll As New Collection
    coll.Add "AA1234.pdf"
    coll.Add "AA_ljgslf_1234.pdf"
    coll.Add "AA1234.pdf1"
    coll.Add "1234 AA.pdf"
    coll.Add "12_AA_1234_NM.pdf"

    ' Определить шаблон
    Dim pattern As String: pattern = "*AA*1234*.pdf"

    ' Проверьте каждый элемент по шаблону
    Dim f As Variant
    For Each f In coll
        Debug.Print f Like pattern
    Next f

End Sub

На выходе:

ИСТИНА
ИСТИНА
ЛОЖЬ
ЛОЖЬ
ИСТИНА

Чтобы узнать больше о сопоставлении с шаблоном и ключевом слове Like, ознакомьтесь с этой публикацией.

Заключение

InStr и InStrRev действительно полезны только для простых задач, таких как проверка наличия текста в строке.

Left, Right и Mid полезны, когда положение текста всегда одинаково.

Функция Split — лучший способ извлечь переменную строку.

При попытке проверить формат строки, которая не является фиксированной по размеру, ключевое слово Like (т.е. Сопоставление с образцом) обычно обеспечивает более простое решение.

Skip to content

Функция ЛЕВСИМВ в Excel. Примеры использования и советы.

В руководстве показано, как использовать функцию ЛЕВСИМВ (LEFT) в Excel, чтобы получить подстроку из начала текстовой строки, извлечь текст перед определенным символом, заставить формулу возвращать число и многое другое.

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

  • Правила синтаксиса.
  • Как получить подстроку слева от определенного символа?
  • Удаляем последние N символов.
  • Как заставить ЛЕВСИМВ вернуть число, а не текст.
  • Почему не работает?

Cинтаксис.

Функция ЛЕВСИМВ в Excel возвращает указанное количество символов (подстроку) от начала содержимого ячейки.

Синтаксис следующий:

ЛЕВСИМВ (текст; [колич_знаков])

Где:

  • Текст  (обязательно) — это текст, из которого вы хотите извлечь подстроку. Обычно предоставляется как ссылка на ячейку, в которой он записан.
  • Второй аргумент  (необязательно) — количество знаков для извлечения, начиная слева.
    • Если параметр опущен, то по умолчанию подразумевается 1, то есть возвращается 1 знак.
    • Если введенное значение больше общей длины ячейки, формула вернет всё ее содержимое.

Например, чтобы извлечь первые 6 символов из A2, запишите такое выражение:

=ЛЕВСИМВ(A2; 6)

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

Важное замечание! ЛЕВСИМВ относится к категории текстовых функций, поэтому результатом её всегда является текстовая строка, даже если исходное значение, из которого вы извлекаете цифры, является числом. Если вы работаете с числовым набором данных и хотите, чтобы было извлечено именно число, применяйте ее вместе с функцией ЗНАЧЕН, как показано в одном из примеров ниже.

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

Как извлечь подстроку перед определенным символом.

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

Если имя и фамилия разделены пробелом, проблема сводится к определению положения этого разделителя. Это можно легко сделать с помощью функции ПОИСК или НАЙТИ .

Предположим, что полное имя находится в ячейке A2, позиция пробела возвращается по этой простой формуле: ПОИСК(» «; A2)). А теперь вы вставляете это выражение в ЛЕВСИМВ:

=ЛЕВСИМВ(A2; ПОИСК(» «; A2))

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

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

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

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

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

ЛЕВСИМВ( строка ; ПОИСК( символ ; строка ) — 1)

Как удалить последние N символов.

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

ЛЕВСИМВ ( текст ; ДЛСТР( текст ) — число_символов_для_удаления )

Это работает с такой логикой: ДЛСТР получает общее количество символов в ячейке, затем вы вычитаете количество ненужных знаков из общей длины, а ЛЕВСИМВ возвращает оставшееся.

Например, чтобы удалить последние 7 знаков из текста в A2, запишите такое выражение:

=ЛЕВСИМВ(A2; ДЛСТР(A2)-11)

Как показано на скриншоте, формула успешно отсекает слово «продукты» (8 букв, разделитель и 2 пробела) из текстовых значений в столбце A.

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

Как заставить ЛЕВСИМВ возвращать число.

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

Итак, как заставить ЛЕВСИМВ выводить числовое значение, а не текстовую строку, состоящую из цифр? Просто заключив его в функцию ЗНАЧЕН (VALUE), которая предназначена для преобразования текста, состоящего из цифр, в число.

Например, чтобы извлечь символы перед разделителем “-” из A2 и преобразовать результат в число, можно сделать так:

=ЗНАЧЕН(ЛЕВСИМВ(A2;ПОИСК(«-«;A2;1)-1))

Результат будет выглядеть примерно так:

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

Это лишь некоторые из множества возможных вариантов использования ЛЕВСИМВ в Excel. 

Дополнительные примеры формул ЛЕВСИМВ можно найти на следующих ресурсах:

  • Разделить строку запятой, двоеточием, косой чертой, тире или другим разделителем
  • Как разбить текстовую строку вида «число + текст» по столбцам 
  • Подсчитайте количество символов до или после данного символа

Не работает ЛЕВСИМВ — причины и решения

Если ЛЕВСИМВ не работает на ваших листах должным образом, это, скорее всего, связано с одной из причин, которые мы перечислим ниже.

1. Аргумент «количество знаков» меньше нуля

Если ваша формула возвращает ошибку #ЗНАЧ!, то первое, что вам нужно проверить, — это значение аргумента количество_знаков. Если вы видите отрицательное число, просто удалите знак минус, и ошибка исчезнет (конечно, очень маловероятно, что кто-то намеренно поставит отрицательное число, но человек может ошибиться :)

Чаще всего ошибка #ЗНАЧ! возникает, когда этот аргумент получен в результате вычислений, а не записан вручную. В этом случае скопируйте это вычисление в другую ячейку или выберите его в строке формул и нажмите F9, чтобы увидеть результат ее работы. Если значение меньше 0, проверьте на наличие ошибок.

Чтобы лучше проиллюстрировать эту мысль, возьмем формулу, которую мы записали в первом примере для извлечения телефонных кодов страны:

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

Как вы помните, функция ПОИСК в наших примерах вычисляет позицию первого дефиса в исходной строке, из которой мы затем вычитаем 1, чтобы удалить дефис из окончательного результата. Если я случайно заменю -1, скажем, на -11, Эксель выдаст ошибку #ЗНАЧ!, потому что нельзя извлечь отрицательное количество букв и цифр:

2. Начальные пробелы в исходном тексте

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

Чтобы избавиться от ведущих пробелов на листах, воспользуйтесь СЖПРОБЕЛЫ (TRIM).

3. ЛЕВСИМВ не работает с датами.

Если вы попытаетесь использовать ЛЕВСИМВ для получения отдельной части даты (например, дня, месяца или года), в большинстве случаев вы получите только первые несколько цифр числа, представляющего эту дату. Дело в том, что в Microsoft Excel все даты хранятся как числа, представляющие количество дней с 1 января 1900 года. То, что вы видите в ячейке, это просто визуальное представление даты. Ее отображение можно легко изменить, применив другой формат.

Например, если у вас есть дата 15 июля 2020 года в ячейке A1 и вы пытаетесь извлечь день с помощью выражения ЛЕВСИМВ(A1;2). Результатом будет 44, то есть первые 2 цифры числа 44027, которое представляет 15 июля 2020г. во внутренней системе Эксель.

Чтобы извлечь определенную часть даты, возьмите одну из следующих функций:  ДЕНЬ(),  МЕСЯЦ() или  ГОД().

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

Вот как можно использовать функцию ЛЕВСИМВ в Excel. 

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

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

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