У меня есть таблица Excel, содержащая список строк. Каждая строка состоит из нескольких слов, но количество слов в каждой строке отличается.
Используя встроенные функции Excel (без VBA), есть ли способ выделить последнее слово в каждой строке?
Примеры:
Вы классифицированы как человек? -> человек? Отрицательный, я эскимо мяса -> эскимо Азиз! Свет! -> Свет!
excel
excel-formula
e.James
источник
источник
Ответы:
Этот протестирован и работает (на основе оригинального поста Брэда):
Если ваши оригинальные строки могут содержать трубу "|" символ, затем замените оба вышеупомянутых с другим символом, который не появится в вашем источнике. (Я подозреваю, что оригинал Брэда был сломан, потому что непечатный символ был удален в переводе).
Бонус: как это работает (справа налево):
LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
- Количество пробелов в исходной строкеSUBSTITUTE(A1," ","|", ... )
- Заменяет только последний пробел на|
FIND("|", ... )
- Находит абсолютную позицию замененного|
(это был последний пробел)Right(A1,LEN(A1) - ... ))
- Возвращает все символы после этого|
РЕДАКТИРОВАТЬ: для учета случая, когда исходный текст не содержит пробелов, добавьте следующее в начало формулы:
делая всю формулу сейчас:
Или вы можете использовать
=IF(COUNTIF(A1,"* *")
синтаксис другой версии.Если исходная строка может содержать пробел в последней позиции, добавьте функцию обрезки при подсчете всех пробелов: Сделайте функцию следующей:
источник
Это техника, которую я использовал с большим успехом:
Чтобы получить первое слово в строке, просто измените с ВПРАВО на ВЛЕВО
Также замените А1 на ячейку с текстом.
источник
" "
на мой разделитель.100
Кажется, что эти два ограничивают его до 100 символов, если я не ошибаюсь=TRIM(SUBSTITUTE(RIGHT(SUBSTITUTE(A1, ".", REPT(".", 100)), 100), ".", ""))
Более надежная версия ответа Джерри:
Это работает независимо от длины строки, начальных или конечных пробелов или чего-либо еще, и все еще довольно коротко и просто.
источник
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))
чтобы получить расширение файла.SUBSTITUTE
позволяет ему работать для любого персонажа, а не только пробелы.=TRIM(SUBSTITUTE(RIGHT(SUBSTITUTE(TRIM(A1),"/",REPT("/",LEN(TRIM(A1)))),LEN(TRIM(A1))),"/",""))
где "/" - символ-разделитель." ; "
(точка с запятой окружена пробелами) с входным значением:"Technology Sprint 24 ; Sprint 4"
она возвращает:"; Sprint 4"
. Я использую решение, дополненное: @PProteus.TRIM(A1)
на:TRIM(SUBSTITUTE(A1, "strDelimeter", ";"))
во всех местах, чтобы получить новый разделитель символов:";"
или даже лучше использоватьchar()
функцию для поиска какой-то действительно неожиданный персонаж.TRIM
функция после добавления второгоSUBSTITUTE
для общего случая решения одного символа. Формула обеспечивает ожидаемый результат, исключая эту часть:=SUBSTITUTE(RIGHT(SUBSTITUTE(TRIM(A1),";",REPT(";",LEN(TRIM(A1)))),LEN(TRIM(A1))),";","")
Я нашел это в Google, проверено в Excel 2003, и это работает для меня:
[править] Мне не хватает представителя, чтобы комментировать, так что это, кажется, лучшее место ... Ответ BradC также не работает с конечными пробелами или пустыми ячейками ...
[2-е редактирование] на самом деле, он не работает для отдельные слова либо ...
источник
Это очень надежно - оно работает для предложений без пробелов, пробелов в начале / в конце, нескольких пробелов, пробелов в начале / в конце ... и я использовал char (7) для разделителя, а не вертикальную черту "|" на всякий случай, это желаемый текстовый элемент.
источник
Это очень чистый и компактный, и работает хорошо.
Это не ошибка ловушки ни для пробелов, ни для одного слова, но это легко добавить.
Изменить:
Это обрабатывает концевые пробелы, одиночное слово и сценарии пустых ячеек. Я не нашел способ сломать это.
источник
источник
Чтобы добавить к ответам Джерри и Джо, если вы хотите найти текст ДО последнего слова, которое вы можете использовать:
С «Моим маленьким котом» в А1 получилось бы «Мой маленький» (где Джо и Джерри дали бы «кот»
Точно так же, как Джерри и Джо выделяют последнее слово, оно просто получает все слева от этого (затем обрезает его обратно)
источник
Представьте, что строка может быть полностью изменена. Тогда это действительно легко. Вместо того, чтобы работать над строкой:
ты работаешь с
С помощью
=LEFT(A1;FIND(" ";A1)-1)
в A2 вы получаете"My"
с (1) и"tac"
с (2), который является обратным"cat"
, последнее слово в (1).Есть несколько VBA, чтобы перевернуть строку. Я предпочитаю публичную функцию VBA
ReverseString
.Установите выше, как описано. Затем с вашей строкой в A1, например,
"My little cat"
и этой функцией в A2:вы увидите
"cat"
в A2.Приведенный выше метод предполагает, что слова разделяются пробелами. Предложение
IF
относится к ячейкам, содержащим отдельные слова = без пробелов в ячейке. Примечание:TRIM
иCLEAN
оригинальная строка также полезны. В принципе, он переворачивает всю строку из A1 и просто находит первый пробел в перевернутой строке, которая находится рядом с последним (перевернутым) словом (т. Е."tac "
).LEFT
выбирает это слово, а другая перестановка строк восстанавливает первоначальный порядок слова (" cat"
). В-1
концеFIND
оператора удаляет пробел.Идея заключается в том , что его легко извлечь первое (!) Слово в строке с
LEFT
иFIND
ING первого пробела. Однако для последнего (!) СловаRIGHT
функция является неправильным выбором, когда вы пытаетесь это сделать, потому что, к сожалению, в FIND нет флага для направления, в котором вы хотите проанализировать вашу строку.Поэтому вся строка просто перевернута.
LEFT
иFIND
работать как обычно, но извлеченная строка переворачивается. Но это не страшно, если вы знаете, как перевернуть строку. ПервоеReverseString
утверждение в формуле делает эту работу.источник
источник
Скопируйте в столбец, выберите этот столбец и HOME> Редактирование> Найти и выбрать, Заменить:
Replace All,
После звездочки есть пробел.
источник
Я перевел на PT-BR, так как мне это тоже нужно.
(Обратите внимание, что я изменил пространство на,
\
потому что мне нужно было имя файла только из строк пути.)источник
Другой способ добиться этого, как показано ниже
источник
У меня также была такая задача, и когда я закончил, используя вышеуказанный метод, у меня возник новый метод: почему бы вам не сделать это:
Как это звучит?
источник