Последнее слово
Простая, на первый взгляд, задача с не очевидным решением: извлечь из строки текста последнее слово. Ну или, в общем случае, последний фрагмент, отделенный заданным символом-разделителем (пробелом, запятой и т.д.) Другими словами, необходимо реализовать реверсивный поиск (от конца к началу) в строке заданного символа и извлечь потом все символы справа от него.
Давайте рассмотрим традиционно несколько способов решения на выбор: формулами, макросами и через Power Query.
Способ 1. Формулы
Чтобы проще было понять суть и механику формулы, начнем немного издалека. Сначала увеличим количество пробелов между словами в нашем исходном тексте до, например 20 штук. Сделать это можно при помощи функции замены ПОДСТАВИТЬ (SUBSTITUTE) и функции повтора заданного символа N-раз — ПОВТОР (REPT):
Теперь отрежем от конца получившегося текста 20 символов с помощью функции ПРАВСИМВ (RIGHT):
Уже теплее, да? Осталось убрать лишние пробелы с помощью функции СЖПРОБЕЛЫ (TRIM) и задача будет решена:
В английской версии наша формула будет выглядеть, соответственно:
=TRIM(RIGHT(SUBSTITUTE(A1;» «;REPT(» «;20));20))
Надеюсь, понятно, что в принципе не обязательно вставлять именно 20 пробелов — подойдет любое количество, лишь бы оно было больше, чем длина самого длинного слова в исходном тексте.
И если исходный текст нужно разделить не по пробелу, а по другому символу-разделителю (например, по запятой), то нашу формулу надо будет чуть-чуть подправить:
Способ 2. Макрофункция
Задачу извлечения последнего слова или фрагмента из текста также можно решить с помощью макросов, а именно — написать функцию реверсивного поиска в Visual Basic, которая будет делать то, что нам нужно — искать заданную подстроку в строке в обратном направлении — от конца к началу.
Нажмите сочетание клавиш Alt+F11 или кнопку Visual Basic на вкладке Разработчик (Developer), чтобы открыть редактор макросов. Затем добавьте новый модуль через меню Insert — Module и скопируйте туда следующий код:
Function LastWord(txt As String, Optional delim As String = " ", Optional n As Integer = 1) As String arFragments = Split(txt, delim) LastWord = arFragments(UBound(arFragments) - n + 1) End Function
Теперь можно сохранить книгу (в формате с поддержкой макросов!) и воспользоваться созданной функцией в следующем синтаксисе:
=LastWord(txt ; delim ; n)
где
- txt — ячейка с исходным текстом
- delim — символ-разделитель (по умолчанию — пробел)
- n — какое по счету слово с конца необходимо извлечь (по умолчанию — первое с конца)
При любых изменениях в исходном тексте в будущем наша макрофункция будет «на лету» пересчитываться, как и любая стандартная функция листа Excel.
Способ 3. Power Query
Power Query — это бесплатная надстройка от Microsoft для импорта данных в Excel из практически любых источников и последующей трансформации загруженных данных в любой вид. Мощь и крутизна этой надстройки настолько велики, что Microsoft встроила все ее возможности в Excel 2016 по умолчанию. Для Excel 2010-2013 Power Query можно бесплатно скачать отсюда.
Наша задача по отделению последнего слова или фрагмента через заданный разделитель с помощью Power Query решается очень легко.
Сначала превратим нашу таблицу с данными в умную с помощью сочтания клавиш Ctrl+T или команды Главная — Форматировать как таблицу (Home — Format as Table):
Затем загрузим созданную «умную таблицу» в Power Query с помощью команды Из таблицы / диапазона (From table/range) на вкладке Данные (если у вас Excel 2016) или на вкладке Power Query (если у вас Excel 2010-2013):
В открывшемся окне редактора запросов на вкладке Преобразование (Transform) выберем команду Разделить столбец — По разделителю (Split Column — By delimiter) и затем останется задать символ-разделитель и выбрать опцию Самый правый разделитель, чтобы разрубить не все слова, а только последнее:
После нажатия на ОК последнее слово будет отделено в новый столбец. Ненужный первый столбец можно удалить, щелкнув по его заголовку правой кнопкой мыши и выбрав Удалить (Delete). Также можно переименовать оставшийся столбец в шапке таблицы.
Результаты можно выгрузить обратно на лист, используя команду Главная — Закрыть и загрузить — Закрыть и загрузить в … (Home — Close & Load — Close & Load to…):
И в итоге получаем:
Вот так — дешево и сердито, без формул и макросов, почти не касаясь клавиатуры
Если в будущем исходный список изменится, то достаточно будет правой кнопкой мыши или сочетанием клавиш Ctrl+Alt+F5 обновить наш запрос.
Ссылки по теме
- Разделение слипшегося текста по столбцам
- Анализ и разбор текста регулярными выражениями
- Извлечение первых слов из текста функцией ПОДСТАВИТЬ (SUBSTITUTE)
Если строка в ячейке содержит несколько слов, например, «Василий Иванович Петров», то можно создать формулу для вывода последнего слова.
Пусть текстовая строка
Василий Иванович Петров
находится в ячейке
A
1
. Выведем последнее слово (см.
файл примера
):
=ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(«^^»; ПОДСТАВИТЬ(A1;» «;»^^»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»)))))
В формуле предполагается, что слова разделены пробелами (код символа = 32). Перед применением формулы убедитесь, что в строке нет лишних пробелов. Это можно сделать функцией
СЖПРОБЕЛЫ()
.
В статье
Выбор из текстовой строки n-го слова
приведено решение подобной задачи в общем случае.
Вообще,
хранить несколько текстовых значений в одной ячейке неправильно
, отсюда и возникают такого рода задачи, имеющие громоздкие решения.
Как альтернативу можно посоветовать воспользоваться инструментом
Текст-По-Столбцам
(
), позволяющему, разделить текстовую строку на несколько строк.
Если необходимо из текстовой строки вывести первое слово, то читайте статью
Выбор из строки первого слова
.
копирование последнего слова в ячейке |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Содержание
- Microsoft Excel
- Как извлечь слова из строки таблицы Excel
- Извлечение первого слова из строки
- Извлечение последнего слова строки
- Извлечение всего, кроме первого слова строки
- ПРАВСИМВ, ПРАВБ (функции ПРАВСИМВ, ПРАВБ)
- Описание
- Синтаксис
- Пример
- Последнее слово
- Способ 1. Формулы
- Способ 2. Макрофункция
- Способ 3. Power Query
- Удалить последнее слово в ячейках Excel / удалить последние N слов
- Удалить последнее слово из ячейки: формула
- Удаление с помощью регулярного выражения
- Удалить последнее слово/N последних слов во всем столбце
- Заключение
Microsoft Excel
трюки • приёмы • решения
Как извлечь слова из строки таблицы Excel
Формулы в этой статье полезны для извлечения слов из текста, содержащегося в ячейке. Например, вы можете создать формулу для извлечения первого слова в предложении.
Извлечение первого слова из строки
Если вам нужно, чтобы формула была совместима с более ранними версиями 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;» «;»»))))))
Извлечение всего, кроме первого слова строки
Формула возвращает ошибку, если ячейка содержит только одно слово. Следующая версия формулы использует функцию ЕСЛИОШИБКА, чтобы можно было избежать ошибки; формула возвращает пустую строку, если ячейка не содержит более одного слова:
=ЕСЛИОШИБКА(ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(» «;A1;1));»»)
А эта версия совместима со всеми версиями Excel:
=ЕСЛИ(ЕОШ(НАЙТИ(» «;A1));»»;ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(» «;A1;1)))
Источник
ПРАВСИМВ, ПРАВБ (функции ПРАВСИМВ, ПРАВБ)
В этой статье описаны синтаксис формулы и использование функций ПРАВСИМВ и ПРАВБ в Microsoft Excel.
Описание
Функция ПРАВСИМВ возвращает последний символ или несколько последних символов текстовой строки на основе заданного числа символов.
Функция ПРАВБ возвращает последний символ или несколько последних символов текстовой строки на основе заданного числа байтов.
Эти функции могут быть доступны не на всех языках.
Функция ПРАВСИМВ предназначена для языков с однобайтовой кодировкой, а ПРАВБ — для языков с двухбайтовой кодировкой. Язык по умолчанию, заданный на компьютере, влияет на возвращаемое значение следующим образом.
Функция ПРАВСИМВ всегда считает каждый символ (одно- или двухбайтовый) за один вне зависимости от языка по умолчанию.
Функция ПРАВБ считает каждый двухбайтовый символ за два, если включена поддержка ввода на языке с двухбайтовой кодировкой, а затем этот язык назначен языком по умолчанию. В противном случае функция ПРАВБ считает каждый символ за один.
К языкам, поддерживающим БДЦС, относятся японский, китайский (упрощенное письмо), китайский (традиционное письмо) и корейский.
Синтаксис
Аргументы функций ПРАВСИМВ и ПРАВБ описаны ниже.
Текст Обязательный. Текстовая строка, содержащая символы, которые требуется извлечь.
Число_знаков Необязательный. Количество символов, извлекаемых функцией ПРАВСИМВ.
Значение «число_знаков» должно быть больше нуля или равно ему.
Если значение «число_знаков» превышает длину текста, функция ПРАВСИМВ возвращает весь текст.
Если значение «число_знаков» опущено, оно считается равным 1.
Число_байтов Необязательный. Количество символов, извлекаемых функцией ПРАВБ.
Num_bytes должен быть больше нуля или равен нулю.
Если num_bytes больше, чем длина текста, то right возвращает весь текст.
Если num_bytes опущен, предполагается, что это 1.
Пример
Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.
Источник
Последнее слово
Простая, на первый взгляд, задача с не очевидным решением: извлечь из строки текста последнее слово. Ну или, в общем случае, последний фрагмент, отделенный заданным символом-разделителем (пробелом, запятой и т.д.) Другими словами, необходимо реализовать реверсивный поиск (от конца к началу) в строке заданного символа и извлечь потом все символы справа от него.
Давайте рассмотрим традиционно несколько способов решения на выбор: формулами, макросами и через Power Query.
Способ 1. Формулы
Теперь отрежем от конца получившегося текста 20 символов с помощью функции ПРАВСИМВ (RIGHT) :
Уже теплее, да? Осталось убрать лишние пробелы с помощью функции СЖПРОБЕЛЫ (TRIM) и задача будет решена:
В английской версии наша формула будет выглядеть, соответственно:
=TRIM(RIGHT(SUBSTITUTE(A1;» «;REPT(» «;20));20))
И если исходный текст нужно разделить не по пробелу, а по другому символу-разделителю (например, по запятой), то нашу формулу надо будет чуть-чуть подправить:
Способ 2. Макрофункция
Теперь можно сохранить книгу (в формате с поддержкой макросов!) и воспользоваться созданной функцией в следующем синтаксисе:
=LastWord(txt ; delim ; n)
При любых изменениях в исходном тексте в будущем наша макрофункция будет «на лету» пересчитываться, как и любая стандартная функция листа Excel.
Способ 3. Power Query
Наша задача по отделению последнего слова или фрагмента через заданный разделитель с помощью Power Query решается очень легко.
Затем загрузим созданную «умную таблицу» в Power Query с помощью команды Из таблицы / диапазона (From table/range) на вкладке Данные (если у вас Excel 2016) или на вкладке Power Query (если у вас Excel 2010-2013):
И в итоге получаем:
Если в будущем исходный список изменится, то достаточно будет правой кнопкой мыши или сочетанием клавиш Ctrl + Alt + F5 обновить наш запрос.
Источник
Удалить последнее слово в ячейках Excel / удалить последние N слов
Иногда при работе с Excel возникает необходимость удалить последнее слово или несколько слов в конце фраз в ячейках.
Для решения задачи можно объединить несколько функций программы, чтобы осуществить поиск справа налево в ячейке, но есть помимо обычных формул и другие способы. Расскажу обо всем по порядку.
Удалить последнее слово из ячейки: формула
В отличие от процедуры удаления первого слова из ячейки, где формула довольно простая в силу того, что функция ПОИСК ищет слева направо, формула для удаления последнего слова существенно сложнее.
К сожалению, эквивалента ПОИСК, которая искала бы символ в строке не слева направо, а наоборот, справа, нет. Ниже пошаговое описание формулы, которая позволит, тем не менее, сочетанием функций найти его. После этого удалить последнее слово будет уже несложно.
Формула получается заменой A1 на полное выражение без знака равенства во втором шаге.
=ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))
Если вы точно уверены, можно использовать конкретный символ, например, «».
Можно повысить уверенность с помощью функции ЮНИСИМВ — она позволяет вставлять на лист какие угодно символы из UNICODE-таблицы.
Например, =ЮНИСИМВ(23456)
Возвращает: 宠
Полагаю, это китайский или японский.
У функции ПОДСТАВИТЬ есть необязательный четвертый аргумент, обозначающий позицию символа, который нужно заменить. На втором шаге мы его не использовали, чтобы он удалил все пробелы. На этом шаге вставляем в него формулу из четвертого шага.
Третьим аргументом будет формула из пятого шага.
=ПОДСТАВИТЬ(A1;» «;ЮНИСИМВ(23456);ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»)))
На этот раз функция ПОИСК замечательно справится. Поскольку символ в строке гарантированно в единственном экземпляре, его можно искать и слева направо.
=ПОИСК(ЮНИСИМВ(23456);A1;ПОДСТАВИТЬ(A1;» «;ЮНИСИМВ(23456);ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))))
=ПОИСК(ЮНИСИМВ(23456);A1;ПОДСТАВИТЬ(A1;» «;ЮНИСИМВ(23456);ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))))-1
=ЛЕВСИМВ(A1;ПОИСК(ЮНИСИМВ(23456);A1;ПОДСТАВИТЬ(A1;» «;ЮНИСИМВ(23456);ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))))-1)
Чтобы обезопасить себя от ситуаций, когда в ячейке одно слово и чтобы формула в таких случаях его удаляла, а не возвращала ошибку.
=ЛЕВСИМВ(» «&A1;ПОИСК(ЮНИСИМВ(23456);ПОДСТАВИТЬ(» «&A1;» «;ЮНИСИМВ(23456);ДЛСТР(» «&A1)-ДЛСТР(ПОДСТАВИТЬ(» «&A1;» «;»»))))-1)
Предыдущий шаг добавит обезопасит от ошибок, но добавит лишний пробел слева. Функция удалит его и любые другие лишние пробелы между слов или в конце строки.
Итак, формула удаления последнего слова из ячейки:
Удаление с помощью регулярного выражения
Регулярные выражения в Excel наделяют специалиста, знакомого с их синтаксисом, практически неограниченными возможностями по поиску, извлечению, замене и удалению текстовых данных без использования монструозных мегаформул, описанных выше.
Функциями листа можно пользоваться абсолютно бесплатно, а подробно об этом синтаксисе можно почитать в моей статье:
Удалить последнее слово/N последних слов во всем столбце
Удаляем последние 2 слова в конце всех ячеек:
Удаление последних двух слов в ячейках столбца в 2 клика
Аналогично решается задача для нескольких — можно использовать пункт «Последние N», чтобы указать количество удаляемых слов, считая справа:
Удаляем последние 4 слова в ячейках столбца, вводя необходимое количество слов самостоятельно
Заключение
Источник
Хитрости »
24 Июль 2013 94472 просмотров
Как получить слово после последнего пробела
Получить слово до первого пробела достаточно просто:
=ПСТР(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), чтобы отсечь лишние пробелы в начале и в конце строки и оставить только одиночные пробелы между словами:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(» «&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;ПОВТОР(» «;999));1;999*1);999);» «;»»)
=SUBSTITUTE(RIGHT(MID(» «&SUBSTITUTE(TRIM(A1),» «,REPT(» «,999)),1,999*1),999),» «,»»)
=ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ(» «&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;ПОВТОР(» «;999));999*1);1;999);» «;»»)
=SUBSTITUTE(MID(RIGHT(» «&SUBSTITUTE(TRIM(A1),» «,REPT(» «,999)),999*1),1,999),» «,»»)
=СЖПРОБЕЛЫ(ПСТР(ПРАВСИМВ(» «&ПОДСТАВИТЬ(A1;» «;ПОВТОР(» «;999));999*3);1;999*2))
=TRIM(MID(RIGHT(» «&SUBSTITUTE(A1,» «,REPT(» «,999)),999*3),1,999*2))
3 — третье слово с конца строки.
2 — количество слов.
Как видите — хоть формула и выглядит не так-то просто — она весьма универсальная: может и определенное слово вытащить, и к тому же еще и количество извлекаемых слов можно указать.
Остается еще добавить, что вместо пробелов могут быть и другие символы. Например, очень часто встречается ситуация, когда надо из текста получить не одно слово в конкретной позиции, а конкретную строку из текста, разнесенного в одной ячейке на строки:
Тогда для получения второй строки(
ТЦ Таганка
и
ТЦ Опус
) можно применить такую формулу:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(СИМВОЛ(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);»/»;»»)
- C2 — ячейка с текстом, последнее слово из которого надо извлечь.
- «/» — разделитель слов. Если для разделения слов используется не слеш, а запятая или точка — то во всей формуле, где встречается этот символ надо заменить его на нужный.
Если лень прописывать этот символ внутри формулы несколько раз, его можно записать в отдельную ячейку(скажем, G1) и в формуле указать ссылку уже на эту ячейку:
=ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ(G1&ПОДСТАВИТЬ(C2;G1;ПОВТОР(G1;999));999*1);1;999);G1;»»)
Теперь для изменения символа надо будет изменить его один раз в ячейке G1 и формула «вытащит» нужное слово/строку, опираясь именно на этот символ. - *1 — число 1 — позиция слова с конца строки, которое необходимо «достать». 1 — первое с конца(т.е. последнее), 2 — предпоследнее и т.д.
Зная эти основные моменты достаточно будет в своем файле просто скопировать формулу выше и подставить в неё ссылку на нужную ячейку и указать требуемый разделитель.
Скачать пример:
Слово после последнего пробела.xls (29,5 KiB, 3 779 скачиваний)
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика