Извлечение текста, стоящего между определенных слов
cerber412
Дата: Понедельник, 13.11.2017, 06:19 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Здравствуйте. Помогите разобраться с формулой. Есть текстовая строка. В этой текстовой строке встречаются слова "УТРО." "ДЕНЬ." "ВЕЧЕР." "ОТМЕТКА-" Между ними может находится любой текст. Но данные ключевые слова - идут всегда именно в таком порядке. Как извлечь из текстовой строки текст, стоящий между этими четырьмя словами-разделителями ?
Здравствуйте. Помогите разобраться с формулой. Есть текстовая строка. В этой текстовой строке встречаются слова "УТРО." "ДЕНЬ." "ВЕЧЕР." "ОТМЕТКА-" Между ними может находится любой текст. Но данные ключевые слова - идут всегда именно в таком порядке. Как извлечь из текстовой строки текст, стоящий между этими четырьмя словами-разделителями ? cerber412
Ответить
Сообщение Здравствуйте. Помогите разобраться с формулой. Есть текстовая строка. В этой текстовой строке встречаются слова "УТРО." "ДЕНЬ." "ВЕЧЕР." "ОТМЕТКА-" Между ними может находится любой текст. Но данные ключевые слова - идут всегда именно в таком порядке. Как извлечь из текстовой строки текст, стоящий между этими четырьмя словами-разделителями ? Автор - cerber412 Дата добавления - 13.11.2017 в 06:19
Nic70y
Дата: Понедельник, 13.11.2017, 08:48 |
Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 9129
Репутация:
2415
±
Замечаний:
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))
Код
=СЖПРОБЕЛЫ(ПСТР(ИНДЕКС(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
Ю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]
На регулярках: Код
=рег_зам($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
Ответить
Сообщение На регулярках: Код
=рег_зам($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 теряет пробел в первом тексте (там где двойной пробел).
Здрасьте.Код
=ПСТР(ИНДЕКС(СМЕЩ($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
Ответить
Сообщение Здрасьте.Код
=ПСТР(ИНДЕКС(СМЕЩ($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
А попроще? Для каждого отрезка вписать свои слова-ограничители и подрегулировать число + и -:Код
=ПСТР(D4;ПОИСК("УТРО";D4)+6;ПОИСК("ДЕНЬ";D4)-ПОИСК("УТРО";D4)-8)
А попроще? Для каждого отрезка вписать свои слова-ограничители и подрегулировать число + и -:Код
=ПСТР(D4;ПОИСК("УТРО";D4)+6;ПОИСК("ДЕНЬ";D4)-ПОИСК("УТРО";D4)-8)
vikttur
Ответить
Сообщение А попроще? Для каждого отрезка вписать свои слова-ограничители и подрегулировать число + и -:Код
=ПСТР(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
Ответить
Сообщение Nic70y, buchlotnik, ILPalazzio, vikttur, - спасибо. Все варианты работают. Автор - cerber412 Дата добавления - 14.11.2017 в 00:26