Выбрать последнее слово в строке excel

Последнее слово

Простая, на первый взгляд, задача с не очевидным решением: извлечь из строки текста последнее слово. Ну или, в общем случае, последний фрагмент, отделенный заданным символом-разделителем (пробелом, запятой и т.д.) Другими словами, необходимо реализовать реверсивный поиск (от конца к началу) в строке заданного символа и извлечь потом все символы справа от него.

Давайте рассмотрим традиционно несколько способов решения на выбор: формулами, макросами и через Power Query.

Способ 1. Формулы

Чтобы проще было понять суть и механику формулы, начнем немного издалека. Сначала увеличим количество пробелов между словами в нашем исходном тексте до, например 20 штук. Сделать это можно при помощи функции замены ПОДСТАВИТЬ (SUBSTITUTE) и функции повтора заданного символа N-раз — ПОВТОР (REPT):

Добавляем пробелы между словами

Теперь отрежем от конца получившегося текста 20 символов с помощью функции ПРАВСИМВ (RIGHT):

Берем последние 20 знаков

Уже теплее, да? Осталось убрать лишние пробелы с помощью функции СЖПРОБЕЛЫ (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 — какое по счету слово с конца необходимо извлечь (по умолчанию — первое с конца)

Применение функции LastWord

При любых изменениях в исходном тексте в будущем наша макрофункция будет «на лету» пересчитываться, как и любая стандартная функция листа 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):

Загружаем таблицу в Power Query

В открывшемся окне редактора запросов на вкладке Преобразование (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-го слова

приведено решение подобной задачи в общем случае.

Вообще,

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

, отсюда и возникают такого рода задачи, имеющие громоздкие решения.

Как альтернативу можно посоветовать воспользоваться инструментом

Текст-По-Столбцам

(

), позволяющему, разделить текстовую строку на несколько строк.

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

Выбор из строки первого слова

.

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

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

Чтобы извлечь первое слово из строки, формула должна найти позицию первого символа пробела, а затем использовать эту информацию в качестве аргумента для функции ЛЕВСИМВ. Следующая формула делает это: =ЛЕВСИМВ(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)))

копирование последнего слова в ячейке

RAMH

Дата: Воскресенье, 23.11.2014, 21:27 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 17


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Доброго времени!
В продолжение темы.
Задача: необходимо из ячеек столбца B вырезать последнее слово и вставить в ячейку C. Число символов последнего слова разная.

К сообщению приложен файл:

3927701.xlsx
(13.0 Kb)

 

Ответить

Nic70y

Дата: Воскресенье, 23.11.2014, 21:32 |
Сообщение № 2

Группа: Друзья

Ранг: Экселист

Сообщений: 8136


Репутация:

1999

±

Замечаний:
0% ±


Excel 2010

вариант 1:

Код

=ПСТР(B2;ПОИСК(«@»;ПОДСТАВИТЬ(B2;» «;»@»;ДЛСТР(B2)-ДЛСТР(ПОДСТАВИТЬ(B2;» «;))))+1;ДЛСТР(B2))

вариант 2:

Код

=СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(B2;» «;ПОВТОР(» «;99));99))

добавил вариант 2

К сообщению приложен файл:

15-42.xlsx
(14.5 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70yВоскресенье, 23.11.2014, 21:36

 

Ответить

ermakovaN

Дата: Воскресенье, 23.11.2014, 22:57 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 19


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Nic70y, если первое слово?

 

Ответить

ermakovaN

Дата: Воскресенье, 23.11.2014, 22:58 |
Сообщение № 4

Группа: Пользователи

Ранг: Новичок

Сообщений: 19


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Nic70y, а, можно ли его оттуда вырезать и вставить в соседний столбец?

 

Ответить

ermakovaN

Дата: Воскресенье, 23.11.2014, 23:01 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 19


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Для загрузки товаров на сайт нужно, чтоб артикул был в другом столбце, как сделать это с помощью Excel?

К сообщению приложен файл:

5469887.xlsx
(10.3 Kb)

Сообщение отредактировал ermakovaNВоскресенье, 23.11.2014, 23:04

 

Ответить

Pelena

Дата: Воскресенье, 23.11.2014, 23:22 |
Сообщение № 6

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

ermakovaN, какое отношение Ваш вопрос имеет к теме «Копирование последнего слова в ячейке»?
Прочитайте Правила форума и создайте свою тему


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

RAMH

Дата: Воскресенье, 23.11.2014, 23:43 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 17


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

вариант 1:

=ПСТР(B2;ПОИСК(«@»;ПОДСТАВИТЬ(B2;» «;»@»;ДЛСТР(B2)-ДЛСТР(ПОДСТАВИТЬ(B2;» «;))))+1;ДЛСТР(B2))
вариант 2:

=СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(B2;» «;ПОВТОР(» «;99));99))

все работает, спасибо.

 

Ответить

VDGS

Дата: Воскресенье, 23.11.2014, 23:47 |
Сообщение № 8

Группа: Пользователи

Ранг: Новичок

Сообщений: 28


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

так??
Ответ удален, так как вопрос задан с нарушением Правил форума
[moder] VDGS, не спешите помогать нарушителям[/moder]

Сообщение отредактировал PelenaВоскресенье, 23.11.2014, 23:50

 

Ответить

VDGS

Дата: Воскресенье, 23.11.2014, 23:56 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 28


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

понял :)

Сообщение отредактировал VDGSВоскресенье, 23.11.2014, 23:57

 

Ответить

ermakovaN

Дата: Понедельник, 24.11.2014, 10:36 |
Сообщение № 10

Группа: Пользователи

Ранг: Новичок

Сообщений: 19


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Pelena, правила я прочитала. Но, пост был человека, создавшего тему, был именно об этом. Поэтому, я не стала плодить темы. Но, раз это не по правилам, создам новую.

 

Ответить

Pelena

Дата: Понедельник, 24.11.2014, 10:40 |
Сообщение № 11

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel


Согласитесь, это немного не то, что последнее


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Извлечение слов из ячейки в таблице Excel — это простая задача, позволяющая получить первое или последнего слова из текста.

  • Первого слова;
  • Последнего.
  • N-го.

Видеоинструкция

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

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

=ЛЕВСИМВ(A2;НАЙТИ(«*»;ПОДСТАВИТЬ(A2;» «;»*»;1)))

Извлечение первого слова из ячейки Excel

Важно! Последняя цифра 1 отвечает за количество слов, которое будет скопированы, поэтому заменив ее, например, на 3 можно получить первых 3 значения.

Пример для трех.

=ЛЕВСИМВ(A2;НАЙТИ(«*»;ПОДСТАВИТЬ(A2;» «;»*»;3)))

Извлечение первых трех слов из таблицы Excel

Пример:

Копирование последнего слова

Решение заключается в использовании конструкции:

=ЕСЛИОШИБКА(ПРАВСИМВ(A2;ДЛСТР(A2)-НАЙТИ(«*»;ПОДСТАВИТЬ(A2;» «;»*»;ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;» «;»»)))));A2)

Извлечение последнего слова из ячейки Эксель

Данная конструкция работает без модификации и изменить ее нельзя.

Пример:

Извлечение n-го слова из ячейки

Получить n-е слово из текста можно при помощи этой формулы (в примере используется 3):

=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;» «;ПОВТОР(» «;ДЛСТР(A1)));ДЛСТР(A1)*(Number-1)+1;ДЛСТР(A1)))

Где Number — это число, отвечающее за номер.

Извлечение третьего слова из ячейки Excel

Пример №2 для 4-го

=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;» «;ПОВТОР(» «;ДЛСТР(A1)));ДЛСТР(A1)*(4-1)+1;ДЛСТР(A1)))

Извлечение четвертого слова из ячейки Excel

Пример:

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

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

  • Выбрать параметры шрифта или абзаца в документе ms word
  • Выбрать комбинацию клавиш для быстрого перехода в конец документа ms word
  • Выбрать комбинацию в excel
  • Выбрать кодировку которая позволит прочитать ваш документ word
  • Выбрать какие фамилии отобразятся в таблице excel после применения автофильтра

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

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