Страницы: 1
RSS
Вытянуть слово из предложения по критериям
 
Может кто знает возможно ли выбрать ключевой слово из набора слов. В данном случае критерий отбора (за что могу зацепиться) "г"-пробел-Вспомогательное слово-пробел-ИСКОМОЕ СЛОВО-вспомогательное слово. Какой формулой можно вытягивать искомое слово.
Либо формула для поиска Искомого слова после ключевого слова. в данном примере после "АВК" или "Конти".
Изменено: Demonik - 07.04.2016 13:31:43
«Всё гениальное просто» перефразировка афоризма Леонардо да Винчи
 
если слово всегда пятое по счету то можно так
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(" "&$A1;" ";ПОВТОР(" ";50));5*50;50))

с привязкой к "г " и пробелам
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(" "&$A2;" ";ПОВТОР(" ";50));(ДЛСТР(ПСТР(A2;1;ПОИСК("г ";A2)))-ДЛСТР(ПОДСТАВИТЬ(ПСТР(A2;1;ПОИСК("г ";A2));" ";""))+3)*50;50))
Изменено: V - 07.04.2016 09:47:14
 
С помощью регулярных выражений
 
Цитата
V написал:
если слово всегда пятое по счету то можно так
К сожалению слово не всегда пятое. Возможно ли искать ключевое слово после заданного. В данном примере следующее слово после заданного "АВК"?
«Всё гениальное просто» перефразировка афоризма Леонардо да Винчи
 
Цитата
LVL написал: С помощью регулярных выражений
У меня рабочий комп вложение не открывается. Можете пересохранить в обычном формате.
«Всё гениальное просто» перефразировка афоризма Леонардо да Винчи
 
Если привязываться к "г", как по вашему условию, то вот так:
Код
=ПСТР(ПСТР(A1;НАЙТИ(" ";A1;НАЙТИ(" ";A1;НАЙТИ("г";A1)+1)+1)+1;100);1;НАЙТИ(" ";A1;НАЙТИ(" ";A1;НАЙТИ(" ";A1;НАЙТИ("г";A1)+1)+1)+1)-НАЙТИ(" ";A1;НАЙТИ(" ";A1;НАЙТИ("г";A1)+1)+1)-1) 

Сильно замудрено, но результат даёт
Изменено: artlee - 07.04.2016 13:28:48
 
Цитата
Demonik написал: Можете пересохранить в обычном формате
Пропадут макросы )
 
А как можно вытянуть слово из ковычек. Например ячейка А1 (пряник 240 гр "медовый" неглазированный) Вытянуть слово "медовый".
«Всё гениальное просто» перефразировка афоризма Леонардо да Винчи
 
Текст функции для ввода в ячейку:
Код
=обрабтекст(A1;"^.*г\s+(АВК|Конти)\s+([А-Яа-я]+).*$";"$2")
А1 - ссылка на ячейку с исходной текстовой строкой
Текст самой UDF поместить в стандартный модуль:

Код
Public Function ОБРАБТЕКСТ(ByRef astring As Variant, _
                           ByRef Mask As String, _
                           ByRef Model As String, _
                           Optional ByVal Mline As Boolean = False) As String
'Функция заменяет совпавшую с маской часть строки в соответствии с указанной моделью

If astring.Cells.Count <> 1 Then ОБРАБТЕКСТ = "#ЗНАЧ!": Exit Function

Dim re As RegExp

Set re = New RegExp
re.Pattern = Mask
'Просматривается вся строка
re.Global = True
'Регистр символов игнорируется
re.IgnoreCase = True
re.MultiLine = Mline

ОБРАБТЕКСТ = re.Replace(astring, Model)

End Function
Должна быть подключена библиотека
Tools\References\Microsoft VBScript Regular Expressions 5.5
Изменено: LVL - 07.04.2016 12:20:17
 
вариант для #8
Код
Function uuu$(t$)
   With CreateObject("VBScript.RegExp"): .IgnoreCase = True
      .Pattern = """([а-яё]+)"""
      uuu = .Execute(t)(0).Submatches(0)
   End With
End Function
Изменено: sv2013 - 07.04.2016 12:27:07
 
вариант для #1
Код
 Function uuu$(t$)
   With CreateObject("VBScript.RegExp"): .IgnoreCase = True
      .Pattern = "(АВК|Конти) ([А-ЯЁ]+)"
      uuu = .Execute(t)(0).Submatches(1)
   End With
End Function
Изменено: sv2013 - 07.04.2016 12:31:39
 
Цитата
sv2013 написал: .Pattern = "(АВК|Конти) ([А-ЯЁ]+)"
(АВК|Конти) эта часть как раз не нужна
 
Может, конечно, боян, но макрос отсюда творит чудеса http://planetaexcel.ru/techniques/7/101/
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Demonik, второй вопрос - другой! Почему Вас модераторы должны гонять из одной, из другой темы?
Создать новую тему - тяжело?!
 
Цитата
sv2013 написал: вариант для #8
Вариант отличный. Единственное Но . Не воспринимает украинский и английский язык. Как можно его доработать?
«Всё гениальное просто» перефразировка афоризма Леонардо да Винчи
 
Demonik,добавил английский в функцию
 
Код
Function uuu1$(t$)
   With CreateObject("VBScript.RegExp"): .IgnoreCase = True
      .Pattern = """([а-яёa-z]+)"""
      uuu1 = .Execute(t)(0).Submatches(0)
   End With
End Function
Изменено: sv2013 - 08.04.2016 13:40:58
 
sv2013, спасибо :)
«Всё гениальное просто» перефразировка афоризма Леонардо да Винчи
Страницы: 1
Наверх