Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вернуть последнее слово в строке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Вернуть последнее слово в строке (Формулы/Formulas)
Вернуть последнее слово в строке
l-lisa Дата: Вторник, 28.07.2015, 10:32 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 312
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте, не получается придумать формулу, которая бы возвращала последнее слово из строки
К сообщению приложен файл: 4444444.xlsx (7.9 Kb)
 
Ответить
СообщениеЗдравствуйте, не получается придумать формулу, которая бы возвращала последнее слово из строки

Автор - l-lisa
Дата добавления - 28.07.2015 в 10:32
Samaretz Дата: Вторник, 28.07.2015, 10:38 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 223
Репутация: 63 ±
Замечаний: 0% ±

Excel 2010; 2013; 2016
Так надо?
Код
=MID(D2;1+FIND(CHAR(1);SUBSTITUTE(D2;" ";CHAR(1);LEN(D2)-LEN(SUBSTITUTE(D2;" ";""))));LEN(D2))
К сообщению приложен файл: 4461533.xlsx (8.9 Kb)
 
Ответить
СообщениеТак надо?
Код
=MID(D2;1+FIND(CHAR(1);SUBSTITUTE(D2;" ";CHAR(1);LEN(D2)-LEN(SUBSTITUTE(D2;" ";""))));LEN(D2))

Автор - Samaretz
Дата добавления - 28.07.2015 в 10:38
_Boroda_ Дата: Вторник, 28.07.2015, 10:47 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Еще
Формула массива, вводится одновременным нажатием Кнотрл Шифт Ентер
Код
=ПСТР(D2;МАКС((ПСТР(D2;СТРОКА($1:$99);1)=" ")*СТРОКА($1:$99))+1;99)

Обычная
Код
=ПСТР(D2;1+ПОИСК(D2;ПОДСТАВИТЬ(D2;" ";D2;ДЛСТР(D2)-ДЛСТР(ПОДСТАВИТЬ(D2;" ";))));99)

Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(D2;" ";ПОВТОР(" ";99));(ДЛСТР(D2)-ДЛСТР(ПОДСТАВИТЬ(D2;" ";)))*99;99))

С учетом последнего пробела в D3
Код
=ПСТР(D2;1+ПОИСК(D2;ПОДСТАВИТЬ((D2);" ";D2;ДЛСТР(СЖПРОБЕЛЫ(D2))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(D2);" ";))));99)
К сообщению приложен файл: 4444444_1.xlsx (8.6 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕще
Формула массива, вводится одновременным нажатием Кнотрл Шифт Ентер
Код
=ПСТР(D2;МАКС((ПСТР(D2;СТРОКА($1:$99);1)=" ")*СТРОКА($1:$99))+1;99)

Обычная
Код
=ПСТР(D2;1+ПОИСК(D2;ПОДСТАВИТЬ(D2;" ";D2;ДЛСТР(D2)-ДЛСТР(ПОДСТАВИТЬ(D2;" ";))));99)

Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(D2;" ";ПОВТОР(" ";99));(ДЛСТР(D2)-ДЛСТР(ПОДСТАВИТЬ(D2;" ";)))*99;99))

С учетом последнего пробела в D3
Код
=ПСТР(D2;1+ПОИСК(D2;ПОДСТАВИТЬ((D2);" ";D2;ДЛСТР(СЖПРОБЕЛЫ(D2))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(D2);" ";))));99)

Автор - _Boroda_
Дата добавления - 28.07.2015 в 10:47
l-lisa Дата: Вторник, 28.07.2015, 10:47 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 312
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Да, hands работает правильно!
 
Ответить
СообщениеДа, hands работает правильно!

Автор - l-lisa
Дата добавления - 28.07.2015 в 10:47
AlexM Дата: Вторник, 28.07.2015, 11:01 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4505
Репутация: 1127 ±
Замечаний: 0% ±

Excel 2003
С учетом последнего пробела в D3
можно и так
Код
=ПСТР(D2;1+ПОИСК(D2;ПОДСТАВИТЬ(D2;" ";D2;ДЛСТР(СЖПРОБЕЛЫ(D2))-ДЛСТР(ПОДСТАВИТЬ(D2;" ";))));99)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
С учетом последнего пробела в D3
можно и так
Код
=ПСТР(D2;1+ПОИСК(D2;ПОДСТАВИТЬ(D2;" ";D2;ДЛСТР(СЖПРОБЕЛЫ(D2))-ДЛСТР(ПОДСТАВИТЬ(D2;" ";))));99)

Автор - AlexM
Дата добавления - 28.07.2015 в 11:01
l-lisa Дата: Вторник, 28.07.2015, 11:10 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 312
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Спасибо большое за помощь, хочу понять как работают формулы, например эта:
Код
=ПСТР(D2;1+ПОИСК(D2;ПОДСТАВИТЬ(D2;" ";D2;ДЛСТР(D2)-ДЛСТР(ПОДСТАВИТЬ(D2;" ";))));99)


Зачем нужен 1+ и мне не понятно почему первым аргументов в поиск() стоит D2, а не " " ?
 
Ответить
СообщениеСпасибо большое за помощь, хочу понять как работают формулы, например эта:
Код
=ПСТР(D2;1+ПОИСК(D2;ПОДСТАВИТЬ(D2;" ";D2;ДЛСТР(D2)-ДЛСТР(ПОДСТАВИТЬ(D2;" ";))));99)


Зачем нужен 1+ и мне не понятно почему первым аргументов в поиск() стоит D2, а не " " ?

Автор - l-lisa
Дата добавления - 28.07.2015 в 11:10
AlexM Дата: Вторник, 28.07.2015, 11:24 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4505
Репутация: 1127 ±
Замечаний: 0% ±

Excel 2003
С учетом последнего пробела массивная
Код
=ПСТР(D2;ПОИСКПОЗ(2;1/(ПСТР(СЖПРОБЕЛЫ(D2);СТРОКА($1:$99);1)=" "))+1;99)
Зачем нужен 1+
чтобы в результате впереди не было пробела.
почему первым аргументов в поиск() стоит D2, а не " "
вместо последнего пробела вставлена строка из D2, поэтому ищем позицию первого вхождения D2.
Но эта формула не учитывает, что в конце второй строки есть пробел, поэтому со вторым строкой работать не будет.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеС учетом последнего пробела массивная
Код
=ПСТР(D2;ПОИСКПОЗ(2;1/(ПСТР(СЖПРОБЕЛЫ(D2);СТРОКА($1:$99);1)=" "))+1;99)
Зачем нужен 1+
чтобы в результате впереди не было пробела.
почему первым аргументов в поиск() стоит D2, а не " "
вместо последнего пробела вставлена строка из D2, поэтому ищем позицию первого вхождения D2.
Но эта формула не учитывает, что в конце второй строки есть пробел, поэтому со вторым строкой работать не будет.

Автор - AlexM
Дата добавления - 28.07.2015 в 11:24
китин Дата: Вторник, 28.07.2015, 11:25 | Сообщение № 8
Группа: Модераторы
Ранг: Экселист
Сообщений: 7015
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Код
=ПСТР(СЖПРОБЕЛЫ(D2);ПОИСК("@";ПОДСТАВИТЬ(СЖПРОБЕЛЫ(D2);" ";"@";ДЛСТР(СЖПРОБЕЛЫ(D2))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(D2);" ";""))))+1;999)

просто потренировался.


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение
Код
=ПСТР(СЖПРОБЕЛЫ(D2);ПОИСК("@";ПОДСТАВИТЬ(СЖПРОБЕЛЫ(D2);" ";"@";ДЛСТР(СЖПРОБЕЛЫ(D2))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(D2);" ";""))))+1;999)

просто потренировался.

Автор - китин
Дата добавления - 28.07.2015 в 11:25
_Boroda_ Дата: Вторник, 28.07.2015, 11:29 | Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Код
=ПСТР(D2;1+ПОИСК(D2;ПОДСТАВИТЬ(D2;" ";D2;ДЛСТР(D2)-ДЛСТР(ПОДСТАВИТЬ(D2;" ";))));99)

1. ПОДСТАВИТЬ(D2;" ";) - подставляет вместо пробелов ничего - просто убирает пробелы
2. ДЛСТР(ПОДСТАВИТЬ(D2;" ";)) - дает длину полученного (количество символов)
3. ДЛСТР(D2) - кол-во символов в исходной строке
4. п.3 - п.2 - дает количество пробелов
5. ПОДСТАВИТЬ(D2;" ";D2;п.4) - подставляет вместо n-го по счету (где n = п.4) пробела саму ячейку D2 (обычно подставляют какое-то маловероятное сочетание символов, типа @#$%). Пример: было ййй ццц ууу, стало ййй цццййй ццц уууууу
6. 1+ПОИСК(D2;п.5) - ищем D2 в полученном в п.5, найдя, получаем номер позиции последнего пробела, прибавив 1, получаем нопер позиции буквы после последнего пробела
7. ПСТР(D2;п.6;99) - забираем из D2 99 символов, начиная от найденного в п.6


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Код
=ПСТР(D2;1+ПОИСК(D2;ПОДСТАВИТЬ(D2;" ";D2;ДЛСТР(D2)-ДЛСТР(ПОДСТАВИТЬ(D2;" ";))));99)

1. ПОДСТАВИТЬ(D2;" ";) - подставляет вместо пробелов ничего - просто убирает пробелы
2. ДЛСТР(ПОДСТАВИТЬ(D2;" ";)) - дает длину полученного (количество символов)
3. ДЛСТР(D2) - кол-во символов в исходной строке
4. п.3 - п.2 - дает количество пробелов
5. ПОДСТАВИТЬ(D2;" ";D2;п.4) - подставляет вместо n-го по счету (где n = п.4) пробела саму ячейку D2 (обычно подставляют какое-то маловероятное сочетание символов, типа @#$%). Пример: было ййй ццц ууу, стало ййй цццййй ццц уууууу
6. 1+ПОИСК(D2;п.5) - ищем D2 в полученном в п.5, найдя, получаем номер позиции последнего пробела, прибавив 1, получаем нопер позиции буквы после последнего пробела
7. ПСТР(D2;п.6;99) - забираем из D2 99 символов, начиная от найденного в п.6

Автор - _Boroda_
Дата добавления - 28.07.2015 в 11:29
AlexM Дата: Вторник, 28.07.2015, 11:40 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4505
Репутация: 1127 ±
Замечаний: 0% ±

Excel 2003
До кучи. Не массивная с учетом последнего пробела
Код
=ПСТР(D2;ПРОСМОТР(2;1/(ПСТР(СЖПРОБЕЛЫ(D2);СТРОКА($1:$99);1)=" ");СТРОКА($1:$99))+1;99)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеДо кучи. Не массивная с учетом последнего пробела
Код
=ПСТР(D2;ПРОСМОТР(2;1/(ПСТР(СЖПРОБЕЛЫ(D2);СТРОКА($1:$99);1)=" ");СТРОКА($1:$99))+1;99)

Автор - AlexM
Дата добавления - 28.07.2015 в 11:40
l-lisa Дата: Вторник, 28.07.2015, 12:09 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 312
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Большое спасибо за пояснение
 
Ответить
СообщениеБольшое спасибо за пояснение

Автор - l-lisa
Дата добавления - 28.07.2015 в 12:09
МВТ Дата: Вторник, 28.07.2015, 21:12 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
Примитивная UDF до кучи [vba]
Код
Function GetLast(Строка As String)
Dim arr: arr = Split(Application.WorksheetFunction.Trim(Строка))
GetLast = arr(UBound(arr))
End Function
[/vba]
 
Ответить
СообщениеПримитивная UDF до кучи [vba]
Код
Function GetLast(Строка As String)
Dim arr: arr = Split(Application.WorksheetFunction.Trim(Строка))
GetLast = arr(UBound(arr))
End Function
[/vba]

Автор - МВТ
Дата добавления - 28.07.2015 в 21:12
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Вернуть последнее слово в строке (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!