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

Вход

Регистрация

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

 

= Мир MS Excel/Извлечение 2-го слова из текста - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Извлечение 2-го слова из текста (Формулы/Formulas)
Извлечение 2-го слова из текста
nechehov Дата: Понедельник, 04.12.2017, 16:53 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день!

С помощью какой формулы можно извлечь из текста 2-е слово, у которого может быть разное количество букв и стандартная формула ЛЕВСИМВ не подходит?
К сообщению приложен файл: 3632951.xlsx(8Kb)
 
Ответить
СообщениеДобрый день!

С помощью какой формулы можно извлечь из текста 2-е слово, у которого может быть разное количество букв и стандартная формула ЛЕВСИМВ не подходит?

Автор - nechehov
Дата добавления - 04.12.2017 в 16:53
buchlotnik Дата: Понедельник, 04.12.2017, 16:59 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3433
Репутация: 921 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A2;" ";ПОВТОР(" ";99));100;100))
К сообщению приложен файл: 8607679.xlsx(9Kb)


"заступлюсь за Юрия" - публичный плевок в душу!
 
Ответить
Сообщение
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A2;" ";ПОВТОР(" ";99));100;100))

Автор - buchlotnik
Дата добавления - 04.12.2017 в 16:59
Che79 Дата: Понедельник, 04.12.2017, 17:37 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 660
Репутация: 114 ±
Замечаний: 0% ±

Excel 2007, 2013
не оптимизировано вообще
Код
{=СЖПРОБЕЛЫ(ПСТР(A2;ПОИСК(" ";A2)+1;ПОИСК("$";ПОДСТАВИТЬ(A2;" ";"$";2))-ПОИСК(" ";A2)-2*ИЛИ(ЕЧИСЛО(ПОИСК({",":";":".":";":":"};A2)))))}
- формула массива
К сообщению приложен файл: 3632951_1.xlsx(9Kb)


Делай нормально и будет нормально!
 
Ответить
Сообщениене оптимизировано вообще
Код
{=СЖПРОБЕЛЫ(ПСТР(A2;ПОИСК(" ";A2)+1;ПОИСК("$";ПОДСТАВИТЬ(A2;" ";"$";2))-ПОИСК(" ";A2)-2*ИЛИ(ЕЧИСЛО(ПОИСК({",":";":".":";":":"};A2)))))}
- формула массива

Автор - Che79
Дата добавления - 04.12.2017 в 17:37
bmv98rus Дата: Понедельник, 04.12.2017, 20:47 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 686
Репутация: 114 ±
Замечаний: 0% ±

Excel 2013/2016
Очень старый ресурс
там Returning Any Word Or Words In A String
Код
=MID(A10,SMALL(IF(MID(" "&A10,ROW(INDIRECT("1:"&LEN(A10)+1)),1)=" ",ROW(INDIRECT("1:"&LEN(A10)+1))),B10),SUM(SMALL(IF(MID(" "&A10&" ",ROW(INDIRECT("1:"&LEN(A10)+2)),1)=" ",ROW(INDIRECT("1:"&LEN(A10)+2))),B10+C10*{0,1})*{-1,1})-1)

Длинно, но универсально.


Сообщение отредактировал bmv98rus - Понедельник, 04.12.2017, 20:48
 
Ответить
СообщениеОчень старый ресурс
там Returning Any Word Or Words In A String
Код
=MID(A10,SMALL(IF(MID(" "&A10,ROW(INDIRECT("1:"&LEN(A10)+1)),1)=" ",ROW(INDIRECT("1:"&LEN(A10)+1))),B10),SUM(SMALL(IF(MID(" "&A10&" ",ROW(INDIRECT("1:"&LEN(A10)+2)),1)=" ",ROW(INDIRECT("1:"&LEN(A10)+2))),B10+C10*{0,1})*{-1,1})-1)

Длинно, но универсально.

Автор - bmv98rus
Дата добавления - 04.12.2017 в 20:47
vikttur Дата: Понедельник, 04.12.2017, 20:58 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2557
Репутация: 460 ±
Замечаний: 0% ±

Цитата
Длинно, но универсально.

... и тормознуто-летуче :)

Автору темы: пример нужно показвать не абы-какой, а продумать возможные варианты. Если по показанному примеру, можно проще - брать сразу с 5-го символа (автор утверждает, что все тексты начинаются так - "100 ")
А еще вопрос: запятая - часть слова или разделительный знак? Могут быть другие разделители?


Сообщение отредактировал vikttur - Понедельник, 04.12.2017, 21:17
 
Ответить
Сообщение
Цитата
Длинно, но универсально.

... и тормознуто-летуче :)

Автору темы: пример нужно показвать не абы-какой, а продумать возможные варианты. Если по показанному примеру, можно проще - брать сразу с 5-го символа (автор утверждает, что все тексты начинаются так - "100 ")
А еще вопрос: запятая - часть слова или разделительный знак? Могут быть другие разделители?

Автор - vikttur
Дата добавления - 04.12.2017 в 20:58
buchlotnik Дата: Понедельник, 04.12.2017, 21:04 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3433
Репутация: 921 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
[offtop]блин, народ - у нас тут МШ наоборот нарисовался? :D [/offtop]


"заступлюсь за Юрия" - публичный плевок в душу!
 
Ответить
Сообщение[offtop]блин, народ - у нас тут МШ наоборот нарисовался? :D [/offtop]

Автор - buchlotnik
Дата добавления - 04.12.2017 в 21:04
bmv98rus Дата: Понедельник, 04.12.2017, 21:23 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 686
Репутация: 114 ±
Замечаний: 0% ±

Excel 2013/2016
тормознуто-летуче

Это да. Правда порой нужно что-то посчитать разово и такие решения помогают.

МШ

Тезка, переведите пож.
 
Ответить
Сообщение
тормознуто-летуче

Это да. Правда порой нужно что-то посчитать разово и такие решения помогают.

МШ

Тезка, переведите пож.

Автор - bmv98rus
Дата добавления - 04.12.2017 в 21:23
vikttur Дата: Понедельник, 04.12.2017, 21:35 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 2557
Репутация: 460 ±
Замечаний: 0% ±

Мозговой Штурм. Ветка, на которой сидят мозгоформуловыворачиватели :)
http://www.excelworld.ru/forum/7


Сообщение отредактировал vikttur - Понедельник, 04.12.2017, 21:37
 
Ответить
СообщениеМозговой Штурм. Ветка, на которой сидят мозгоформуловыворачиватели :)
http://www.excelworld.ru/forum/7

Автор - vikttur
Дата добавления - 04.12.2017 в 21:35
Che79 Дата: Понедельник, 04.12.2017, 21:41 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 660
Репутация: 114 ±
Замечаний: 0% ±

Excel 2007, 2013
вот еще вариант, не особо , правда, думая над оптимизацией (в столбце С). Знаки препинания считает за часть слова. В зелёных ячейках накидал вариантов для проверки
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(A2;ПСТР(A2;1;ПОИСК(" ";A2));"");ПОИСК(" ";ПОДСТАВИТЬ(A2;ПСТР(A2;1;ПОИСК(" ";A2));""))))


МШ - мозговой штурм
Миша, (buchlotnik), краткость - с.т.! :D
К сообщению приложен файл: 3632951_2.xlsx(10Kb)


Делай нормально и будет нормально!
 
Ответить
Сообщениевот еще вариант, не особо , правда, думая над оптимизацией (в столбце С). Знаки препинания считает за часть слова. В зелёных ячейках накидал вариантов для проверки
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(A2;ПСТР(A2;1;ПОИСК(" ";A2));"");ПОИСК(" ";ПОДСТАВИТЬ(A2;ПСТР(A2;1;ПОИСК(" ";A2));""))))


МШ - мозговой штурм
Миша, (buchlotnik), краткость - с.т.! :D

Автор - Che79
Дата добавления - 04.12.2017 в 21:41
sv2014 Дата: Вторник, 05.12.2017, 00:32 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 172
Репутация: 37 ±
Замечаний: 0% ±

Excel 2013
nechehov, добрый вечер,ещё вариант функции в столбце E

[vba]
Код
Function yyy$(t$)
   With CreateObject("VBScript.RegExp"): .Global = True: .IgnoreCase = True
    .Pattern = "(?:[^а-яё\w]|^)[а-яё\w]+(?=[^а-яё\w]|$)": yyy = .Execute(t)(1)
  End With
End Function
[/vba]
К сообщению приложен файл: example_04_12_2.xls(34Kb)
 
Ответить
Сообщениеnechehov, добрый вечер,ещё вариант функции в столбце E

[vba]
Код
Function yyy$(t$)
   With CreateObject("VBScript.RegExp"): .Global = True: .IgnoreCase = True
    .Pattern = "(?:[^а-яё\w]|^)[а-яё\w]+(?=[^а-яё\w]|$)": yyy = .Execute(t)(1)
  End With
End Function
[/vba]

Автор - sv2014
Дата добавления - 05.12.2017 в 00:32
buchlotnik Дата: Вторник, 05.12.2017, 00:38 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3433
Репутация: 921 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
Ну если регулярки, зачем такие сложности в паттерне?
Код
=рег_извл(A2;"[^\s,\.]+";2)
[vba]
Код
Function рег_извл(t$, p$, Optional n = 1)
    Application.Volatile
    With CreateObject("VBScript.RegExp")
        If n > 1 Then .Global = True
        .Pattern = p
        рег_извл = .Execute(t)(n - 1)
    End With
End Function
[/vba]
К сообщению приложен файл: 8607679.xlsm(14Kb)


"заступлюсь за Юрия" - публичный плевок в душу!

Сообщение отредактировал buchlotnik - Вторник, 05.12.2017, 00:38
 
Ответить
СообщениеНу если регулярки, зачем такие сложности в паттерне?
Код
=рег_извл(A2;"[^\s,\.]+";2)
[vba]
Код
Function рег_извл(t$, p$, Optional n = 1)
    Application.Volatile
    With CreateObject("VBScript.RegExp")
        If n > 1 Then .Global = True
        .Pattern = p
        рег_извл = .Execute(t)(n - 1)
    End With
End Function
[/vba]

Автор - buchlotnik
Дата добавления - 05.12.2017 в 00:38
Wasilich Дата: Вторник, 05.12.2017, 01:55 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1219
Репутация: 322 ±
Замечаний: 0% ±

2003
МШ :D И я вставлю.
Код
=ЛЕВСИМВ(ЗАМЕНИТЬ(A2;1;НАЙТИ(" ";A2;1);"");НАЙТИ(" ";ЗАМЕНИТЬ(A2;1;НАЙТИ(" ";A2;1);"");1)-1)

[vba]
Код
Sub tekst()
Dim i&, tk$, ns&
  For I = 2 To Range("A" & Rows.Count).End(xlUp).Row
    tk = Mid(Cells(I, 1), InStr(Cells(I, 1), " ") + 1)
    ns = InStr(Mid(Cells(I, 1), InStr(Cells(I, 1), " ") + 1), " ") - 1
    Cells(I, 3) = Mid(tk, 1, ns)
  Next
End Sub
[/vba]
К сообщению приложен файл: 4791459.xls(31Kb)


Сообщение отредактировал Wasilich - Вторник, 05.12.2017, 02:02
 
Ответить
СообщениеМШ :D И я вставлю.
Код
=ЛЕВСИМВ(ЗАМЕНИТЬ(A2;1;НАЙТИ(" ";A2;1);"");НАЙТИ(" ";ЗАМЕНИТЬ(A2;1;НАЙТИ(" ";A2;1);"");1)-1)

[vba]
Код
Sub tekst()
Dim i&, tk$, ns&
  For I = 2 To Range("A" & Rows.Count).End(xlUp).Row
    tk = Mid(Cells(I, 1), InStr(Cells(I, 1), " ") + 1)
    ns = InStr(Mid(Cells(I, 1), InStr(Cells(I, 1), " ") + 1), " ") - 1
    Cells(I, 3) = Mid(tk, 1, ns)
  Next
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 05.12.2017 в 01:55
Светлый Дата: Вторник, 05.12.2017, 06:55 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 304
Репутация: 74 ±
Замечаний: 0% ±

Excel 2007
Ну и я свои пять копеек вставлю:
Код
=ЛЕВБ(ЗАМЕНИТЬ(A2;1;ПОИСК(" ";A2);"");ПОИСК(" ";ЗАМЕНИТЬ(A2;1;ПОИСК(" ";A2);""))-1)

Код
=ПСТР(A2;ПОИСК(" ";A2)+1;ПОИСК("#";ПОДСТАВИТЬ(A2;" ";"#";2))-ПОИСК(" ";A2)-1)


Программировать проще, чем писать стихи.
 
Ответить
СообщениеНу и я свои пять копеек вставлю:
Код
=ЛЕВБ(ЗАМЕНИТЬ(A2;1;ПОИСК(" ";A2);"");ПОИСК(" ";ЗАМЕНИТЬ(A2;1;ПОИСК(" ";A2);""))-1)

Код
=ПСТР(A2;ПОИСК(" ";A2)+1;ПОИСК("#";ПОДСТАВИТЬ(A2;" ";"#";2))-ПОИСК(" ";A2)-1)

Автор - Светлый
Дата добавления - 05.12.2017 в 06:55
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Извлечение 2-го слова из текста (Формулы/Formulas)
Страница 1 из 11
Поиск:

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