копирование последнего слова в ячейке |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Последнее слово
Простая, на первый взгляд, задача с не очевидным решением: извлечь из строки текста последнее слово. Ну или, в общем случае, последний фрагмент, отделенный заданным символом-разделителем (пробелом, запятой и т.д.) Другими словами, необходимо реализовать реверсивный поиск (от конца к началу) в строке заданного символа и извлечь потом все символы справа от него.
Давайте рассмотрим традиционно несколько способов решения на выбор: формулами, макросами и через 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-го слова
приведено решение подобной задачи в общем случае.
Вообще,
хранить несколько текстовых значений в одной ячейке неправильно
, отсюда и возникают такого рода задачи, имеющие громоздкие решения.
Как альтернативу можно посоветовать воспользоваться инструментом
Текст-По-Столбцам
(
), позволяющему, разделить текстовую строку на несколько строк.
Если необходимо из текстовой строки вывести первое слово, то читайте статью
Выбор из строки первого слова
.
Скачать пример рабочей книги
Загрузите образец книги
В этом руководстве будет показано, как извлечь последнее слово из ячейки в Excel и Google Таблицах.
Извлечь последнее слово
Если бы мы хотели извлечь первое слово ячейки, мы могли бы просто использовать функцию FIND, чтобы найти первый пробел, и функцию LEFT, чтобы вывести слово перед пробелом.
К сожалению, в Excel нет функции обратного поиска, поэтому вместо этого нам нужно будет разработать другое решение:
- Мы будем использовать функцию SUBSTITUTE, чтобы заменить пробелы между словами большим количеством (n) пробелов.
- Мы будем использовать функцию RIGHT, чтобы вычислить n правильных пробелов. (Это будет включать наше слово, а также ряд дополнительных пробелов)
- Мы будем использовать функцию TRIM, чтобы вырезать лишние пробелы, оставив только последнее слово.
Вот формула, которую мы будем использовать:
= ОБРЕЗАТЬ (ПРАВО (ПОДСТАВИТЬ (B3; ""; ПОВТОР (""; 10)); 10))
Обратите внимание, что для этого примера мы выбрали n = 10. Это слишком маленькое число: ячейка C6 не содержит полного последнего слова, потому что слово состоит из 11 символов.
Мы выбрали небольшое число для демонстрационных целей, но мы рекомендуем вам использовать гораздо большее число (например, 99) или использовать универсальную формулу, приведенную в конце этого руководства.
Теперь давайте рассмотрим формулу:
Функция ПОВТОР
Функция REPT повторяет символ (n) раз. Эта формула создаст 10 пробелов:
= ПОВТОР (""; 10)
Чтобы показать, с кем будет работать эта функция, мы заменили пробелы дефисами (-):
ЗАМЕНА Функция
Функция ЗАМЕНА находит все пробелы в текстовой строке и заменяет пробелы на 10 пробелов.
= ПОДСТАВИТЬ (B3; ""; C3)
Функция ВПРАВО
Функция ВПРАВО извлекает из ячейки последние 10 символов:
= ВПРАВО (D3,10)
Функция обрезки
Функция TRIM удаляет все начальные и конечные пробелы из текста и возвращает только последнее слово:
= ОБРЕЗАТЬ (E3)
Универсальная формула
Вместо определения числа (n) вы можете использовать функцию LEN для вычисления n как количества символов в ячейке. Эта формула будет работать независимо от того, насколько велико последнее слово.
= ОБРЕЗАТЬ (ВПРАВО (ПОДСТАВИТЬ (B3; ""; ПОВТОР (""; LEN (B3))); LEN (B3)))
Формула для извлечения последнего слова из текста работает в Google Таблицах точно так же, как и в Excel:
Вы поможете развитию сайта, поделившись страницей с друзьями
Извлечение слов из ячейки в таблице Excel — это простая задача, позволяющая получить первое или последнего слова из текста.
- Первого слова;
- Последнего.
- N-го.
Видеоинструкция
Извлечение первого слова из текста
Для того, чтобы выполнить эту задачу можно при помощи формулы:
=ЛЕВСИМВ(A2;НАЙТИ(«*»;ПОДСТАВИТЬ(A2;» «;»*»;1)))
Важно! Последняя цифра 1 отвечает за количество слов, которое будет скопированы, поэтому заменив ее, например, на 3 можно получить первых 3 значения.
Пример для трех.
=ЛЕВСИМВ(A2;НАЙТИ(«*»;ПОДСТАВИТЬ(A2;» «;»*»;3)))
Пример:
Копирование последнего слова
Решение заключается в использовании конструкции:
=ЕСЛИОШИБКА(ПРАВСИМВ(A2;ДЛСТР(A2)-НАЙТИ(«*»;ПОДСТАВИТЬ(A2;» «;»*»;ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;» «;»»)))));A2)
Данная конструкция работает без модификации и изменить ее нельзя.
Пример:
Извлечение n-го слова из ячейки
Получить n-е слово из текста можно при помощи этой формулы (в примере используется 3):
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;» «;ПОВТОР(» «;ДЛСТР(A1)));ДЛСТР(A1)*(Number-1)+1;ДЛСТР(A1)))
Где Number — это число, отвечающее за номер.
Пример №2 для 4-го
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;» «;ПОВТОР(» «;ДЛСТР(A1)));ДЛСТР(A1)*(4-1)+1;ДЛСТР(A1)))
Пример: