Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 28 • Страница 1 из 21  2  >
  Версия для печати (полностью) Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 19.10.2004
Откуда: Москва, СВАО
Ячейки в столбце содержат текст вида ####Тут несколько слов или одно слово######, число решеток различно и неизвестно, как и число слов. Нужно написать формулу, которая будет возвращать длину первого слова между решеток.

Буду очень признателен за помощь. :writer:

_________________
Всё относительно... Чтобы грамотно задать вопрос, нужно знать большую часть ответа.
<<Fishing Overclan>>



Партнер
 

Member
Статус: Не в сети
Регистрация: 26.03.2004
Откуда: Синее море
###### это когда значение или слово не вмещается, если значение(число), то в свойствах поставить округление до сотых или десятых, а если слово, то увеличить длину столбца или сделать написание слов в столбце вертикально.

_________________
жизнь сложная штука, но открывается просто, как ящик.


 

Member
Статус: Не в сети
Регистрация: 19.10.2004
Откуда: Москва, СВАО
:-) :-)
###### это просто пример, можно там сделать ****** или -------. Смысл задачи в том, чтобы с помощью встроенных функций без vba определить длину первого слова во фразе, окаймленной по краям произвольным числом одинаковых известных символов.

_________________
Всё относительно... Чтобы грамотно задать вопрос, нужно знать большую часть ответа.
<<Fishing Overclan>>


 

Member
Статус: Не в сети
Регистрация: 25.12.2007
Откуда: ты это знаешь?
Пёс Бобик писал(а):
Ячейки в столбце содержат текст вида ####Тут несколько слов или одно слово######, число решеток различно и неизвестно, как и число слов. Нужно написать формулу, которая будет возвращать длину первого слова между решеток.

имхо, макрос.
встроенных функций для разделения слов в экселе нет - нужен перебор. можно, конечно написать трехкилометровую условную формулу, перебирающую все варианты нахождения пробела. но, имхо, макросс проще гораздо.

_________________
Ланчей даром не бывает ©


 

Member
Статус: Не в сети
Регистрация: 19.10.2004
Откуда: Москва, СВАО
Rodyanin
макросы использовать нельзя, нужно именно сложную формулу листа.

Пробела там вообще может не быть, если слово одно...

_________________
Всё относительно... Чтобы грамотно задать вопрос, нужно знать большую часть ответа.
<<Fishing Overclan>>


 

Member
Статус: Не в сети
Регистрация: 25.12.2007
Откуда: ты это знаешь?
о, нашел. в русском варианте - НАЙТИ функция называется. ищешь ей место пробела в строке - ну и дальше сам.

_________________
Ланчей даром не бывает ©


 

Member
Статус: Не в сети
Регистрация: 16.04.2004
Откуда: [MSK.RU]
В OpenOffice вот так:
Код:
=LEFT(TRIM(SUBSTITUTE(A1;"#";""));
           IF(ISERROR(SEARCH(" ";TRIM(SUBSTITUTE(A1;"#";""))));
               LEN(TRIM(SUBSTITUTE(A1;"#";"")));
               SEARCH(" ";TRIM(SUBSTITUTE(A1;"#";"")))))

В экселе, наверное, примерно так же :)
Работает только в том случае, если "#" именно окаймляют текст. Внутри любого текста они находиться не должны.


Последний раз редактировалось Tod Schwarzkaiser 03.11.2009 15:42, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 25.12.2007
Откуда: ты это знаешь?
Tod Schwarzkaiser
=НАЙТИ(" ";A1;1), где А1 - ячейка, в которой записан текст.

_________________
Ланчей даром не бывает ©


 

Member
Статус: Не в сети
Регистрация: 19.10.2004
Откуда: Москва, СВАО
Tod Schwarzkaiser
дадада что-то вот такое...не мог бы ты словами описатьалгоритм?

_________________
Всё относительно... Чтобы грамотно задать вопрос, нужно знать большую часть ответа.
<<Fishing Overclan>>


 

Member
Статус: Не в сети
Регистрация: 25.12.2007
Откуда: ты это знаешь?
Пёс Бобик
тебя моя формула чем не устраивает? о_0
делаешь одно условие на случай отсутсвия пробелов в строке (тогда тупо ДЛСТР() используешь)и готово.

_________________
Ланчей даром не бывает ©


 

Member
Статус: Не в сети
Регистрация: 12.03.2005
Откуда: Sumy (UA)
Пёс Бобик Не надо там никакого ВБА, формула простая, если немножко подумать :)

Если исходное значение в ячейке А1, то формула будет такого вида:

Код:
=НАЙТИ(" ";СЖПРОБЕЛЫ(ПОДСТАВИТЬ(A1;"#";" "))&" ";1)



Алгоритм такой:
1) заменяем все # на пробелы
2) удаляем повторяющиеся пробелы (кроме пробелов между словами) и конкатенируем(дурацкое слово :) ) в конец один пробел
3) ищем позицию пробела в строке (если слово одно, то сработает пробел, который мы добавили в п2)

_________________
ЭТО Я НЕТЕРПЕЛИВЫЙ!?!!?Да я Сталкера прошел,не зная что можно бегать!
Как убивать друзей в STALKER: people.overclockers.ru/SilentF/record2


Последний раз редактировалось Silent forest 03.11.2009 15:53, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 19.10.2004
Откуда: Москва, СВАО
Rodyanin
твоя не разделяет фразу и окаймление, а в этом фишка задания.

_________________
Всё относительно... Чтобы грамотно задать вопрос, нужно знать большую часть ответа.
<<Fishing Overclan>>


 

Member
Статус: Не в сети
Регистрация: 16.04.2004
Откуда: [MSK.RU]
А, блин, вам же не слово нужно было, а его длина... Как говорится, упс... :roll:
Код:
=IF(ISERROR(SEARCH(" ";TRIM(SUBSTITUTE(A1;"#";""))));
       LEN(TRIM(SUBSTITUTE(A1;"#";"")));
       SEARCH(" ";TRIM(SUBSTITUTE(A1;"#";"")))-1)

Алгоритм простой:
Если в строке с отброшенным окаймлением не найден пробел, результат - длина строки, иначе - позиция первого пробела минус один.


 

Member
Статус: Не в сети
Регистрация: 25.12.2007
Откуда: ты это знаешь?
Пёс Бобик
=МИН(ДЛСТР(A1);НАЙТИ(" ";СЦЕПИТЬ(A1;" ");1)-1)

доволен?


а! понял тебя. я тебе совсем другую задачу решил. :tooth:

_________________
Ланчей даром не бывает ©


 

Member
Статус: Не в сети
Регистрация: 19.10.2004
Откуда: Москва, СВАО
Silent forest
Tod Schwarzkaiser
ребят, спасибо огромное :beer:

_________________
Всё относительно... Чтобы грамотно задать вопрос, нужно знать большую часть ответа.
<<Fishing Overclan>>


 

Member
Статус: Не в сети
Регистрация: 25.12.2007
Откуда: ты это знаешь?
а длина окаймления произвольна?

_________________
Ланчей даром не бывает ©


 

Member
Статус: Не в сети
Регистрация: 19.10.2004
Откуда: Москва, СВАО
Rodyanin
да я вот тоже смотрю, что мы о разных вещах говорим)) спасибо за участие в любом случае:)
да, длина меняется от ячейки к ячейке и не известна заранее.

_________________
Всё относительно... Чтобы грамотно задать вопрос, нужно знать большую часть ответа.
<<Fishing Overclan>>


 

Member
Статус: Не в сети
Регистрация: 12.03.2005
Откуда: Sumy (UA)
Tod Schwarzkaiser писал(а):
Если в строке с отброшенным окаймлением не найден пробел, результат - длина строки, иначе - позиция первого пробела минус один.

Я специально в конец строки пробел добавил, чтоб огород не городить из условий :)
Пёс Бобик И таки да, из числа, получаемого моей формулой нужно вычесть еденицу, этого я не учел, извиняюсь :oops:

_________________
ЭТО Я НЕТЕРПЕЛИВЫЙ!?!!?Да я Сталкера прошел,не зная что можно бегать!
Как убивать друзей в STALKER: people.overclockers.ru/SilentF/record2


 

Member
Статус: Не в сети
Регистрация: 25.12.2007
Откуда: ты это знаешь?
Пёс Бобик
ну, я уже понял, в общем, как предлагает Silent forest будет работать, только еще единичку в конце вычесть нужно.

Добавлено спустя 31 секунду:
Silent forest
:beer:

_________________
Ланчей даром не бывает ©


 

Member
Статус: Не в сети
Регистрация: 16.04.2004
Откуда: [MSK.RU]
Silent forest
У меня была такая мысль, но она была отброшена как не самая очевидная :roll:

Добавлено спустя 5 минут 47 секунд:
Но мысль красивая, тут ничего не скажешь... Особенно, если сравнить реализации :)


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 28 • Страница 1 из 21  2  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: -SPQR- и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan