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

Вход

Регистрация

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

 

= Мир MS Excel/Извлечение текста, стоящего между определенных слов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Извлечение текста, стоящего между определенных слов (Формулы/Formulas)
Извлечение текста, стоящего между определенных слов
cerber412 Дата: Понедельник, 13.11.2017, 06:19 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте.
Помогите разобраться с формулой.

Есть текстовая строка.
В этой текстовой строке встречаются слова "УТРО." "ДЕНЬ." "ВЕЧЕР." "ОТМЕТКА-"
Между ними может находится любой текст. Но данные ключевые слова - идут всегда именно в таком порядке.

Как извлечь из текстовой строки текст, стоящий между этими четырьмя словами-разделителями ?
К сообщению приложен файл: 8658455.xls (43.0 Kb)
 
Ответить
СообщениеЗдравствуйте.
Помогите разобраться с формулой.

Есть текстовая строка.
В этой текстовой строке встречаются слова "УТРО." "ДЕНЬ." "ВЕЧЕР." "ОТМЕТКА-"
Между ними может находится любой текст. Но данные ключевые слова - идут всегда именно в таком порядке.

Как извлечь из текстовой строки текст, стоящий между этими четырьмя словами-разделителями ?

Автор - cerber412
Дата добавления - 13.11.2017 в 06:19
Nic70y Дата: Понедельник, 13.11.2017, 08:48 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
Код
=СЖПРОБЕЛЫ(ПСТР(ИНДЕКС(D$4:D$96;(СТРОКА(A1)+2)/3);ПОИСК(ВЫБОР(ОСТАТ(СТРОКА(A1)-1;3)+1;"утро";"день";"вечер");ИНДЕКС(D$4:D$96;(СТРОКА(A1)+2)/3))+6;ПОИСК(ВЫБОР(ОСТАТ(СТРОКА(A1)-1;3)+1;"день";"вечер";"отметка");ИНДЕКС(D$4:D$96;(СТРОКА(A1)+2)/3))-ПОИСК(ВЫБОР(ОСТАТ(СТРОКА(A1)-1;3)+1;"утро";"день";"вечер");ИНДЕКС(D$4:D$96;(СТРОКА(A1)+2)/3))-6))
К сообщению приложен файл: 4037757.xls (44.5 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение
Код
=СЖПРОБЕЛЫ(ПСТР(ИНДЕКС(D$4:D$96;(СТРОКА(A1)+2)/3);ПОИСК(ВЫБОР(ОСТАТ(СТРОКА(A1)-1;3)+1;"утро";"день";"вечер");ИНДЕКС(D$4:D$96;(СТРОКА(A1)+2)/3))+6;ПОИСК(ВЫБОР(ОСТАТ(СТРОКА(A1)-1;3)+1;"день";"вечер";"отметка");ИНДЕКС(D$4:D$96;(СТРОКА(A1)+2)/3))-ПОИСК(ВЫБОР(ОСТАТ(СТРОКА(A1)-1;3)+1;"утро";"день";"вечер");ИНДЕКС(D$4:D$96;(СТРОКА(A1)+2)/3))-6))

Автор - Nic70y
Дата добавления - 13.11.2017 в 08:48
buchlotnik Дата: Понедельник, 13.11.2017, 09:29 | Сообщение № 3
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
На регулярках:
Код
=рег_зам($D$4;"([\s\S]+УТРО\.)(.+)(ДЕНЬ\.)(.+)(ВЕЧЕР\.)(.+)(ОТМЕТКА[\s\S]+)";"$"&СТРОКА(A1)*2)
[vba]
Код
Function рег_зам(t$, p$, r$)
    Application.Volatile
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = p
        рег_зам = .Replace(t, r)
    End With
End Function
[/vba]
К сообщению приложен файл: 3125739.xls (48.0 Kb)
 
Ответить
СообщениеНа регулярках:
Код
=рег_зам($D$4;"([\s\S]+УТРО\.)(.+)(ДЕНЬ\.)(.+)(ВЕЧЕР\.)(.+)(ОТМЕТКА[\s\S]+)";"$"&СТРОКА(A1)*2)
[vba]
Код
Function рег_зам(t$, p$, r$)
    Application.Volatile
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = p
        рег_зам = .Replace(t, r)
    End With
End Function
[/vba]

Автор - buchlotnik
Дата добавления - 13.11.2017 в 09:29
ILPalazzio Дата: Понедельник, 13.11.2017, 12:23 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здрасьте.
Код
=ПСТР(ИНДЕКС(СМЕЩ($D$4;;;СЧЁТЗ($D:$D));(СТРОКА(D1)+2)/3);    ПОИСК(ИНДЕКС($P$3:$P$6;ОСТАТ(СТРОКА(D1)-1;3)+1);$D$4)+ДЛСТР(ИНДЕКС($P$3:$P$6;ОСТАТ(СТРОКА(D1)-1;3)+1));    ПОИСК(ИНДЕКС($P$3:$P$6;ОСТАТ(СТРОКА(D1)-1;3)+2);$D$4)   -   ПОИСК(ИНДЕКС($P$3:$P$6;ОСТАТ(СТРОКА(D1)-1;3)+1);$D$4)  -  ДЛСТР(ИНДЕКС($P$3:$P$6;ОСТАТ(СТРОКА(D1)-1;3)+1)))


К словам-разделителям (в диапазоне $P$3:$P$6) добавлены пробелы в начале и в конце.

[p.s.]Решение Nic70y теряет пробел в первом тексте (там где двойной пробел).
К сообщению приложен файл: 456465.xls (45.0 Kb)
 
Ответить
СообщениеЗдрасьте.
Код
=ПСТР(ИНДЕКС(СМЕЩ($D$4;;;СЧЁТЗ($D:$D));(СТРОКА(D1)+2)/3);    ПОИСК(ИНДЕКС($P$3:$P$6;ОСТАТ(СТРОКА(D1)-1;3)+1);$D$4)+ДЛСТР(ИНДЕКС($P$3:$P$6;ОСТАТ(СТРОКА(D1)-1;3)+1));    ПОИСК(ИНДЕКС($P$3:$P$6;ОСТАТ(СТРОКА(D1)-1;3)+2);$D$4)   -   ПОИСК(ИНДЕКС($P$3:$P$6;ОСТАТ(СТРОКА(D1)-1;3)+1);$D$4)  -  ДЛСТР(ИНДЕКС($P$3:$P$6;ОСТАТ(СТРОКА(D1)-1;3)+1)))


К словам-разделителям (в диапазоне $P$3:$P$6) добавлены пробелы в начале и в конце.

[p.s.]Решение Nic70y теряет пробел в первом тексте (там где двойной пробел).

Автор - ILPalazzio
Дата добавления - 13.11.2017 в 12:23
vikttur Дата: Понедельник, 13.11.2017, 12:33 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

А попроще? Для каждого отрезка вписать свои слова-ограничители и подрегулировать число + и -:
Код
=ПСТР(D4;ПОИСК("УТРО";D4)+6;ПОИСК("ДЕНЬ";D4)-ПОИСК("УТРО";D4)-8)
 
Ответить
СообщениеА попроще? Для каждого отрезка вписать свои слова-ограничители и подрегулировать число + и -:
Код
=ПСТР(D4;ПОИСК("УТРО";D4)+6;ПОИСК("ДЕНЬ";D4)-ПОИСК("УТРО";D4)-8)

Автор - vikttur
Дата добавления - 13.11.2017 в 12:33
cerber412 Дата: Вторник, 14.11.2017, 00:26 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Nic70y, buchlotnik, ILPalazzio, vikttur, - спасибо.
Все варианты работают.
 
Ответить
СообщениеNic70y, buchlotnik, ILPalazzio, vikttur, - спасибо.
Все варианты работают.

Автор - cerber412
Дата добавления - 14.11.2017 в 00:26
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Извлечение текста, стоящего между определенных слов (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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