Вернуть последнее слово в строке
l-lisa
Дата: Вторник, 28.07.2015, 10:32 |
Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 312
Репутация:
1
±
Замечаний:
0% ±
Excel 2010
Здравствуйте, не получается придумать формулу, которая бы возвращала последнее слово из строки
Здравствуйте, не получается придумать формулу, которая бы возвращала последнее слово из строки l-lisa
Ответить
Сообщение Здравствуйте, не получается придумать формулу, которая бы возвращала последнее слово из строки Автор - 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))
Так надо? Код
=MID(D2;1+FIND(CHAR(1);SUBSTITUTE(D2;" ";CHAR(1);LEN(D2)-LEN(SUBSTITUTE(D2;" ";""))));LEN(D2))
Samaretz
Ответить
Сообщение Так надо? Код
=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)
Еще Формула массива, вводится одновременным нажатием Кнотрл Шифт Ентер Код
=ПСТР(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_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: 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
Да, работает правильно!
Ответить
Сообщение Да, работает правильно! Автор - 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)
С учетом последнего пробела в D3
можно и такКод
=ПСТР(D2;1+ПОИСК(D2;ПОДСТАВИТЬ(D2;" ";D2;ДЛСТР(СЖПРОБЕЛЫ(D2))-ДЛСТР(ПОДСТАВИТЬ(D2;" ";))));99)
AlexM
Номер мобильного модема (без голосовой связи) 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
Ответить
Сообщение Спасибо большое за помощь, хочу понять как работают формулы, например эта: Код
=ПСТР(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)
чтобы в результате впереди не было пробела. почему первым аргументов в поиск() стоит D2, а не " "
вместо последнего пробела вставлена строка из D2, поэтому ищем позицию первого вхождения D2. Но эта формула не учитывает, что в конце второй строки есть пробел, поэтому со вторым строкой работать не будет.
С учетом последнего пробела массивнаяКод
=ПСТР(D2;ПОИСКПОЗ(2;1/(ПСТР(СЖПРОБЕЛЫ(D2);СТРОКА($1:$99);1)=" "))+1;99)
чтобы в результате впереди не было пробела. почему первым аргументов в поиск() стоит D2, а не " "
вместо последнего пробела вставлена строка из D2, поэтому ищем позицию первого вхождения D2. Но эта формула не учитывает, что в конце второй строки есть пробел, поэтому со вторым строкой работать не будет. AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Ответить
Сообщение С учетом последнего пробела массивнаяКод
=ПСТР(D2;ПОИСКПОЗ(2;1/(ПСТР(СЖПРОБЕЛЫ(D2);СТРОКА($1:$99);1)=" "))+1;99)
чтобы в результате впереди не было пробела. почему первым аргументов в поиск() стоит 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)
просто потренировался.
Код
=ПСТР(СЖПРОБЕЛЫ(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
Код
=ПСТР(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_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: 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)
До кучи. Не массивная с учетом последнего пробелаКод
=ПСТР(D2;ПРОСМОТР(2;1/(ПСТР(СЖПРОБЕЛЫ(D2);СТРОКА($1:$99);1)=" ");СТРОКА($1:$99))+1;99)
AlexM
Номер мобильного модема (без голосовой связи) 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
Ответить
Сообщение Большое спасибо за пояснение Автор - 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] МВТ
Ответить
Сообщение Примитивная 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