Страницы: 1
RSS
Функция "Удалить все после второго (третьего, четвертого...) определенного слова .
 
Есть функция "Удалить все после определенного слова". Но такое слово может повторяться много раз в одной ячейке:

=ЛЕВСИМВ(B3;НАЙТИ("звезда";B3;1))

Нужна функция, с помощью которой можно будет удалить все после последнего такого слова.

Буду благодарен, т.к. эта функция сэкономит десятки часов.
 
Это слово где-то записано или его сразу в формулу вставлять?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
По имеющейся функции оно вписано в формуле. Думаю, так удобно.
 
При чём здесь функция?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Понятия не имею. Функция это или формула. Вот исходные данные:

=ЛЕВСИМВ(B3;НАЙТИ("звезда";B3;1))

Формула так формула.
Изменено: cheeza - 05.03.2013 18:34:18 (Не дописал саму формулу.)
 
=ПСТР(A1;1;ПРОСМОТР(2;ПОИСК("звезда";ПСТР(A1;СТРОКА(1:99);ДЛСТР("звезда")));СТРОКА(1:99))+ДЛСТР("звезда")-1)
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Спасибо, но все удалилось только после второго слова "звезда".
 
Тогда свой пример выкладывать придётся.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Код
Function Звезда$(text$)
Звезда = Left$(text, InStrRev(text, "звезда") + 5)
End Function
 
Цитата
Владимир пишет:
= Left$(text, InStrRev(text, "звезда") + 5)

Странно, в примере, который я написал сам, все четко отсеклось. А в моем файле - нет. Не понимаю, почему.
 
RAN, а куда вставлять эти данные? Попробовал в модуль для макроса - не вышло. Погуглил, но только на формулы, начинающиеся на знак равенства наткнулся.

Поможете разобраться?
 
Код
Public Function УДАЛИТЬТЕКСТ(astr As Range, Mask As Variant) As String

Dim myRegExp As New RegExp

myRegExp.MultiLine = False
myRegExp.Global = True
myRegExp.IgnoreCase = True

myRegExp.Pattern = "(.*)(" & Mask & ")(.*)"
УДАЛИТЬТЕКСТ = myRegExp.Replace(astr, "$1$2")
End Function


Вставляете в модуль персональной книги макросов, сохраняете потом используете как обычную функцию листа. Должна быть подключена библиотека регулярных выражений, в редакторе VBA Tools/referenses/Microsoft regular expressions 5.5

п.с. Первый аргумент функции - ссылка на ячейку с текстом, который нужно модифицировать, второй аргумент - слово (часть слова или буква) после последнего вхождения которой нужно удалить текст. :)
Изменено: LVL - 05.03.2013 10:06:19
 
Спасибо! Буду разбираться  ;)
 
=ПСТР(A1;1;ПОИСК("/";ПОДСТАВИТЬ(A1;"звезда";"/";3))+ДЛСТР("звезда")-1)
Страницы: 1
Наверх