Страницы: 1 2 След.
RSS
Извлечение слова из предложения
 
Всем привет!  
 
Подскажите, пожалуйста, как из предложения извлечь второе слово между двумя пробелами  
 
 
паааfrfff папап апа па  
 
формула =ПСТР(A1;1;НАЙТИ(" ";A1;2)-1) извлечет только первое слово  
 
А как извлечь второе?  
 
Есть ли наподобие функция в VBA&
 
прямо тут (с планетушки) и взято
[*]<a href="mailto:info@ledrex\";>
 
=ПСТР(A1;НАЙТИ(" ";A1);НАЙТИ(" ";A1;НАЙТИ(" ";A1)+1)-НАЙТИ(" ";A1))
 
=ПСТР(A1;1;ПОИСК(" ";BA1;ПОИСК(" ";A1;1)+1)-1)
 
Была опечатка, так точно работает, проверял  
=ПСТР(A1;1;ПОИСК(" ";A1;ПОИСК(" ";A1;1)+1)-1)
 
{quote}{login=Vlad}{date=06.08.2010 02:39}{thema=}{post}=ПСТР(A1;1;ПОИСК(" ";BA1;ПОИСК(" ";A1;1)+1)-1){/post}{/quote}А что должна делать эта формула, кроме возврата #ЗНАЧ! ?
 
{quote}{login=Vlad}{date=06.08.2010 02:40}{thema=}{post}Была опечатка, так точно работает, проверял  
=ПСТР(A1;1;ПОИСК(" ";A1;ПОИСК(" ";A1;1)+1)-1){/post}{/quote}А эта озвращает ДВА слова, а не второе...
 
Извиняюсь, =ПСТР(A1;1;ПОИСК(" ";A1;ПОИСК(" ";A1;1)+1)-1) возвращает всё до второго пробела
 
Sub SecondWord()  
MsgBox Split(Cells(1, 1))(1)  
End Sub
 
{quote}{login=Serge 007}{date=06.08.2010 02:22}{thema=}{post}=ПСТР(A1;НАЙТИ(" ";A1);НАЙТИ(" ";A1;НАЙТИ(" ";A1)+1)-НАЙТИ(" ";A1)){/post}{/quote}  
А если всего два слова с пробелом, то второе слово не вернёт.
 
{quote}{login=Vlad}{date=06.08.2010 02:48}{thema=Re: }{post}{quote}{login=Serge 007}{date=06.08.2010 02:22}{thema=}{post}=ПСТР(A1;НАЙТИ(" ";A1);НАЙТИ(" ";A1;НАЙТИ(" ";A1)+1)-НАЙТИ(" ";A1)){/post}{/quote}  
А если всего два слова с пробелом, то второе слово не вернёт.{/post}{/quote}Да, я пример использовал "паааfrfff папап апа па", в нём заведомо более двух слов.  
 
ЗЫ Твоя формула тоже ошибку выдаст, если слов всего два :-)
 
Согласен. Но как же выглядит универсальная формула, которая и из двух слов второе вернёт и из семи?
 
{quote}{login=Vlad}{date=06.08.2010 03:11}{thema=}{post}Согласен. Но как же выглядит универсальная формула, которая и из двух слов второе вернёт и из семи?{/post}{/quote}  
Лень писать, а логика такова: если один пробел,то от него и до конца; если пробелов больше одного - берем между первым и вторым пробелами... Пробелы посчитать ч/з подставить и длину строки...  
Z.
 
ПОИСК: Возвращает позицию первого вхождения знака или текстовой строки при поиске слева направо, начиная с нач_позиция  
 
Аргументы функции  
(искомый_текст; текст_для_поиска ;нач_позиция)  
 
Интересно, а почему разработчики не включили функцию, которая ищет N-ное вхождение знака или текстовой строки при поиске слева направо, начиная с нач_позиция что то типа:  
 
ПОИСК2:  
Аргументы функции  
(искомый_текст; текст_для_поиска ;нач_позиция ; номер_вхождения_с_лева_на_право_в_строке)  
 
Было бы всё проще!
 
Такой вариант, где N - порядковый номер извлекаемого слова:  
 
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1," ",ПОВТОР(" ",ДЛСТР(A1))),ДЛСТР(A1)*(N-1)+1,ДЛСТР(A1)))
KL
 
{quote}{login=KL}{date=06.08.2010 03:59}{thema=}{post}Такой вариант, где N - порядковый номер извлекаемого слова:  
 
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1," ",ПОВТОР(" ",ДЛСТР(A1))),ДЛСТР(A1)*(N-1)+1,ДЛСТР(A1))){/post}{/quote}  
 
Ув. KL  
Записал Вашу формулу себе на заметку.  
 
И всё же интересно, вот есть ведь функция:  
ПОДСТАВИТЬ(текст;стар_текст;нов_текст;номер_вхождения), где четвёртым необязательным аргументом выступает "номер_вхождения"...  
Отчего же не Разработчикам не включить аналогичную функцию с ПОИСКОМ...  
 
И кстати ещё была бы полезна функция аналогичная СЖПРОБЕЛЫ - "СЖСИМВОЛ", сжимающий любой символ, либо только определённый, повторяющийся более 2 раз в строке.  
 
Но это уже из раздела "Чего вам не хватает в Ексель" :)
 
VDM, добрый день иль вечер.  
А зачем сжимать символ? Я это визуально даже представить не могу. СЖПРОБЕЛЫ - это убрать пробелы. А символ...? Может примерный пример приведёте?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
СЖСИМВОЛ() легко заменяется =ПОДСТАВИТЬ("текст";"двойной символ";"одинарный символ")  :-)
 
{quote}{login=kim}{date=07.08.2010 06:16}{thema=}{post}СЖСИМВОЛ() легко заменяется =ПОДСТАВИТЬ("текст";"двойной символ";"одинарный символ")  :-){/post}{/quote}  
 
Вот и я к тому..
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=VDM}{date=06.08.2010 07:51}{thema=Re: }{post}Отчего же не Разработчикам не включить аналогичную функцию...{/post}{/quote}  
Вопрос "отчего не..." меня совсем не занимает. Гораздо интересней вопрос "как сделать, чтобы...". Разбудите меня среди ночи, и я вам без запинки перечислю как минимум 20 функций листа, которые мне кажутся необходимыми в Excel. Многие из них на протяжении нескольких лет регулярно фигурируют в списках пожеланий собираемых MSFT после каждого релиза новой версии Excel, а воз и ныне там. Повестки дня у всех разные :-)
KL
 
{quote}{login=kim}{date=07.08.2010 06:16}{thema=}{post}СЖСИМВОЛ() легко заменяется =ПОДСТАВИТЬ("текст";"двойной символ";"одинарный символ")  :-){/post}{/quote}  
А если символ повторяется более двух раз и заранее не известно сколько, стоит в начале строки или в конце? Пример: символ 160, но для вспомогательных вычислений мог бы быть любой другой. И при всем при этом, эта функция стояла бы в конце моего списка :-)
KL
 
Какая же в начале списка? :-)
 
<<А если символ повторяется более двух раз и заранее не известно сколько, стоит в начале строки или в конце?>>  
 
Имелось ввиду что-то типа этого?  
 
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" ";"|");"к";" "));" ";"к");"|";" ")  
заменяются повторы буквы "к" на одинарные.
 
{quote}{login=kim}{date=07.08.2010 07:18}{thema=}{post}<<А если символ повторяется более двух раз и заранее не известно сколько, стоит в начале строки или в конце?>>  
 
Имелось ввиду что-то типа этого?  
 
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" ";"|");"к";" "));" ";"к");"|";" ")  
заменяются повторы буквы "к" на одинарные.{/post}{/quote}А не проще так:  
Найти кк  
Заменить к  
?  
ps. в Word работает, должно и в Excel.
 
Можно конечно, только сделать это прийдется не единожды, если повторов более двух.  
Только речь тут о функциях ведется :)
 
{quote}{login=kim}{date=07.08.2010 06:41}{thema=}{post}Какая же в начале списка? :-){/post}{/quote}  
Мой список начинается функциями которые есть в VBA и отсутствуют на листе:  
 
Join  
Split  
StrReverse  
InStrRev  
Evaluate  
 
Затем трехмерные:  
 
СЧЕТЕСЛИ.3Д  
СУММЕСЛИ.3Д  
ВПР.3Д  
ГПР.3Д  
ПРОСМОТР.3Д  
ПОИСКПОЗ.3Д  
СМЕЩ.3Д  
ДВССЫЛ.3Д  
ИНДЕКС.ЗД  
 
Затем с внешними ссылками:  
СЧЕТЕСЛИ.ВНЕШ  
СУММЕСЛИ.ВНЕШ  
СМЕЩ.ВНЕШ  
ДВССЫЛ.ВНЕШ  
 
Затем вспомогательные массивы:  
СОЗДАТЬ.МАССИВ.ЧИСЕЛ(НачЗнач; КонЗнач; Шаг; Вертик; Сортиров)  
СПИСОК.ЛИСТОВ  
СОРТИРОВАТЬ.МАССИВ  
 
Вернуть функцию  
CALL  
 
и еще столько же :-)
KL
 
KL, а у Вас нет более подробного проспекта, по поводу ниже перечисленных функций?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=KL}{date=07.08.2010 06:26}{thema=Re: Re: }{post}{quote}{login=VDM}{date=06.08.2010 07:51}{thema=Re: }{post}{/post}{/quote}Многие из них на протяжении нескольких лет регулярно фигурируют в списках пожеланий {/post}{/quote}  
Кирилл, в сврё время Вы писали, что очень многие пожелания/предложения внедряются Microsoft в жизнь. На Ваш взгляд,- что мешает внедрить ПОСТОЯННО предлагаемые?
 
Пост выше - мой.
 
{quote}{login=}{date=07.08.2010 08:34}{thema=Re: Re: Re: }{post}{quote}{login=KL}{date=07.08.2010 06:26}{thema=Re: Re: }{post}{quote}{login=VDM}{date=06.08.2010 07:51}{thema=Re: }{post}{/post}{/quote}Многие из них на протяжении нескольких лет регулярно фигурируют в списках пожеланий {/post}{/quote}  
Кирилл, в сврё время Вы писали, что очень многие пожелания/предложения внедряются Microsoft в жизнь. На Ваш взгляд,- что мешает внедрить ПОСТОЯННО предлагаемые?{/post}{/quote}  
Юрий,  
Думаю, что все до отвратительности банально: как я уже сказал, повестки дня у всех разные.    
1) То, что важно для меня, необязательно важно для других  
2) Чем продвинутей функционал, тем меньше пользователей это оценят  
3) Что больше влияет на продажи, дополнения для гиков или функционал для среднего пользователя?  
4) В некоторых случаях возможны технические сложности
KL
Страницы: 1 2 След.
Читают тему
Наверх