Страницы: 1
RSS
Вытянуть последнее слово из текстовой строки
 
В столбце B3:B таблицы есть текстовые значения, необходимо в столбец C3:C вытянуть постфикс, тоесть SFE, MATBA, BSE и т.д.
SPI 200 Index (AP) - SFE
Wheat/Trigo Quequen (WU) - MATBA
BSE Feed Wheat - BSE
Tocom Silver - TOCOM
MSCI Hong Kong Index - SIMEX
Alum. HG Cash Off - LME
SAFEX White Maize - SAFEX
Corn Calendar Swap (CCS) - CBOT
Nonfat Dry Milk (GNF) - CME
Stoxx Europe Mid 200 Index (FMCP) - EUREX
10-Year Commonwealth Treasury   Bond Futures (XT) - SFE
Изменено: MOTO - 05.04.2017 11:05:51
 
Данные в файл вставить вместо Вас?
 
Можно формулой, могу и сам протянуть
 
=ПРАВСИМВ(B3;ДЛСТР(B3)-НАЙТИ(" - ";B3;1)-1)
Если автоматизировать бардак, то получится автоматизированный бардак.
 
А формулу на коленке писать?
Связка ПСТР и НАЙТИ Вам поможет решить вопрос.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
=ПРАВСИМВ(B3;ДЛСТР(B3)-НАЙТИ(" - ";B3;1)-1) не корректно подтягивает, файл пример прикрепил
 
Попробуйте так;
=ПСТР(B3;ПОИСК("@";ПОДСТАВИТЬ(B3;"-";"@";ДЛСТР(B3)-ДЛСТР(ПОДСТАВИТЬ(B3;"-";""))))+2;999)
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
=СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(B3;" ";ПОВТОР(" ";50));50))
 
в проект добавляете модуль, в модуль эту функцию
Код
Function LastWord(rg As Range)
  LastWord = Split(rg)(UBound(Split(rg)))
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
ctrl+h найти "* " заменить на пусто.
Я сам - дурнее всякого примера! ...
 
TY всем, решено
 
Ігор Гончаренко, не могли бы добавить к Вашей функции выбор по счету, как здесь:
Код
СЛОВО2 = Split(x)(1)
то есть Ваша функция дает последнее слово, а как получить предпоследнее, предпредпоследнее? второе с конца, третье...  
Изменено: copper-top - 05.04.2017 14:23:07
 
...(Ubound()-1) - предпоследнее.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
еще вариант функций vvv или uuu
Код
Function vvv$(t$)
 With CreateObject("VBScript.RegExp"): .Pattern = "\S+$"
    vvv = .Execute(t)(0)
 End With
End Function
Код
 Function uuu$(t$)
 With CreateObject("VBScript.RegExp"): .Pattern = "\w+": .Global = True: .IgnoreCase = True
    uuu = .Execute(t)(.Execute(t).Count - 1)
 End With
End Function
Изменено: sv2013 - 05.04.2017 17:13:47
 
Владимир, пробовал методом тыка приладить ...(Ubound()-1) к функциям из #9 и #12 и у меня нече не вышло. если Вас не затруднит, пропишите, пожалуйста, код функции полностью.
 
Там разбиение идёт относительно пробелов.
Код
LastWord = Split(rg)(UBound(Split(rg)) - 2)  ="(WU)"
LastWord = Split(rg)(UBound(Split(rg)) - 1)  = "-"
LastWord = Split(rg)(UBound(Split(rg)) - 3) = "Quequen"
и т.д.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Владимир,спасибо. работает. ложу в копилку.
 
Хотел этими методами числа повытягивать после тире, не получилось . Подскажите пожалуйста для числа.
 
Код
Function iDigits(cell As String) As Double
  iDigits = Split(cell, "-")(1)
End Function
 
Kuzmich, СПАСИБО! :) Супер!
 
Цитата
copper-top написал:
а как получить предпоследнее, предпредпоследнее? второе с конца, третье
Это можно сделать так же функциями, кстати: Как получить слово после последнего пробела
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, спасибо за вариант.
Страницы: 1
Наверх