Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 27 След.
RSS
Избушка формулистов-3, не для вопросов, но для формульных задач
 
С подачи некоторых "формульнутых", вопреки жадности некоторых кошачьих и благодаря несказанной доброте некоторых из семейства модераторов открылись двери Избушки  :)  
Для тех, кто не видел двух нижних этажей:
Усовершенствование формул. Избушка формУлистов
Усовершенствование формул. Избушка формУлистов-2
Как это появилось: читать по первой ссылке, сообщение #4.
Предлагаю сохранить старые устои.
В теме размещать заковыристо-"головоломные" задачи. Не обязательно сверхсложные, главное - наличие "изюминки". Обязательное условие - у автора должно быть решение.
Оценка - по минимуму знаков в формуле. Для практических решений - несусветная глупость (не всегда), но здесь ведь люди несерьезные, с "вывихом"  :)  
Сразу показывают решения только человеконенавистники. А как еще назвать людей, которые лишают других возможности поиздеваться над своей и без того больной головой?  :)  

vikttur


Давно ждал, что Виктор окстится, вернёт эту тему. Всю жизнь писать "В свободную минутку" - грустно. А писать, что это "Избушка..30-я" - это постыдно, глупо и неправильно, - это ведь не моё. Виктор придумал, пусть и развивает. Так что предлагаю за 3-ью Избушку выпить и пожелать долгих летов, интересных задач и молодых умов. Хотя сейчас, думаю, сложнее будет, чем 5 лет назад...

Задача 1: Что сказал покойник?
Умер человек и что-то напоследок сказал. Что сказал покойник, непонятно, старенький и больной был.
Надеюсь, что знатоки формулами помогут разобрать сказанное им. Ну, и макросописатели тоже, если им это интересно  ;)  

Кстати, буквально на днях ушла из жизни Ионна Хмелевская, написавшая эту чудесную книгу - "Что сказал покойник". Рекомендую.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Код
Function WhatSay$(s$, rng As Range)
    Dim i&, j&, r, t$
    For Each r In rng.Value
        t = LCase$(r)
        j = 0
        For i = 1 To Len(s)
            j = InStr(j + 1, t, LCase$(Mid$(s, i, 1)))
            If j = 0 Then Exit For
        Next i
        If j Then WhatSay = r: Exit Function
    Next r
End Function


Использование:
Код
=WhatSay(A1;E2:E7)
Изменено: MCH - 12.10.2013 00:44:23
 
Цитата
знатоки формулами помогут... и макросописатели тоже
Михаил стал макросописателем  :)
Поможем живым формулой массива:
=ИНДЕКС(E1:E7;МАКС(ЕСЛИ(ЕЧИСЛО(ПОИСК("*"&ПСТР(A1;1;1)&"*"&ПСТР(A1;2;1)&"*"&ПСТР(A1;3;1)&"*"&ПСТР(A1;4;1)&"*";E1:E7));СТРОКА(1:7))))

Шутки шутками, но:
- с таким названием - в курилку (перенести?);
- думаем о других - название не отражает сути задачи (как переименовать?)?

Но... сомневаюсь я... Автора!  :)  
Может, в Избушке пыль протереть?
 
Цитата
Михаил стал макросописателем  :)  
Не определился я, что более интересно: макросы или формулы, а вот ВПРы штамповать поднадоело уже.
Цитата
Поможем живым формулой массива
Виктор, зачем все эти МАКС, ЕЧИСЛО, СТРОКА, когда можно короче?
Еще днем формулу написал, но не стал выкладывать, из-за не полной универсальности (не более 4 букв исходного слова воспринимает)
Код
=ВПР("*"&ПСТР(A1;1;1)&"*"&ПСТР(A1;2;1)&"*"&ПСТР(A1;3;1)&"*"&ПСТР(A1;4;1)&"*";E2:E7;1;)
Изменено: MCH - 12.10.2013 00:44:24
 
Виктор, иной подход. Значительно лучше моего - монстрообразного. Потестировал с другими словами, вроде совпадает.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Цитата
зачем все эти...
Вот и я теперь думаю: зачем? :)
 
Цитата
Что сказал покойник?
Студенческая народная песня

Раскинулся вектор по модулю пять,
В рядах интегралы стояли.
Студент не сумел производную взять -
Ему в Деканате сказали:

"Анализ нельзя на арапа сдавать -
Профессор тобой не доволен.
Сумей теорему Коши доказать,
Иначе ты будешь уволен!"

Хотел доказать, да сознанья уж нет,
В глазах у него помутилось ...
Увидел стипендии меркнущий свет,
Упал, сердце больше не билось.

Три дня в деканате покойник лежал,
На пальцах Ньютоновы кольца.
И препод над ним как молитву читал
Тринадцатый том Фиxтенгольца.

К ногам привязали тройной интеграл
И в матрицу труп завернули.
Надгробную речь замдекана сказал
И в плюс бесконечность спихнули.

Напрасно студенты ждут друга в пивной,
Им скажут, они зарыдают.
А синуса график волна за волной
На ось ординат набегает.
©
 
Хватит о покойниках. Давайте о производстве ценного продукта(Задача 2)
Нередко "опытные" пользователи Excel при заполнении таблиц заносят ералаш в одну ячейку, а после бегают по сети с просьбами разделить это убожество на удобоваримые данные.
В приложенном файле пример такого заполнения.

Делить мы не будем. Производителям понадобилось извлечь числовые данные. Убытки ли, прибыль будут подсчитывать, нам неведомо. Нам важнее другое:
- числовые данные находятся в конце текстовой строки в скобках;
- число есть в каждом тексте;
- число может быть целым или с n знаков после запятой;
- левее и правее числа могут быть пробелы в любом количестве (условимся, что в скобках может быть не более 15 знаков);
- как обычно, нужна формула без вспомогательных имен и прочих инструментов.

Формула есть. Размер - небольшая  :)  
Бонусный вопрос: что производится на секретном предприятии?
 
27

PS: мне кажется, что 99,99% в данном производстве - недостижимо
Изменено: MCH - 15.10.2013 03:33:28
 
только не смейтесь.65 без =  :oops:  поэтому выкладываю
Код
=ПСТР(ЗАМЕНИТЬ(A2;ДЛСТР(A2);1;"");ПОИСК("(";A2)+1;ПОИСК(")";A2)+1)

неа 76,что бы правильнее было
Код
=СЖПРОБЕЛЫ(ПСТР(ЗАМЕНИТЬ(A1;ДЛСТР(A1);1;"");ПОИСК("(";A1)+1;ПОИСК(")";A1)+1))
Изменено: китин - 15.10.2013 08:33:23
Вполне такой нормальный кинжальчик. Процентов на 100
 
По моему "в лоб" короче 63 с =
=ЗНАЧЕН(ПСТР(A1;ПОИСК("(";A1)+1;ПОИСК(")";A1)-ПОИСК("(";A1)-1))
 
27,37,40
 
Две формулы по 49, и UDF такой же длины.
 
У меня выход подукта от максимального =27/49=55,1%
:(
=--ПОДСТАВИТЬ(ПСТР(A1;ПОИСК("(";A1)+1;15);")";"")
 
Точно, 27. Ничем не удивишь.
Михаил, а производство не угадал - квас  :)
 
Классический вариант - 48.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Открываемся?
здесь_она

Владимир, долго ждал... Задачи придумывать кто будет? :)
 
Цитата
... Задачи придумывать кто будет?  :)  
Не знаю, интересно будет иль нет. Но до сих пор, предлагался вариант "Многоразового ВПР" лишь через ЮДФ и макросы. Есть формульный вариант. Массивный. Думаю, что кто-то что-то более прогрессивней предложит. Вы ведь лучшие в этом мире, Планетяе...  :D  
---------------------------------------------------------------
Задача № 3 - "Многоразовый ВПР"
Не важно текст или число.
Изменено: Владимир - 02.10.2014 14:56:52
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Вить, давай, обЯсняй, как последний шаг работает.
 
Цитата
Хватит о покойниках
О как!
Избушку реанимировали?
 
Цитата
Задача № 3 - "Многоразовый ВПР"
Есть вариант. Формулу сразу выкладывать?
Excel 2013
 
Нет, сразу не нужно.
Цитата
Вить, давай, объясняй, как последний шаг работает.
Вот это и породило задачу.
Случайно обнаружил: текст в скобках преобразуется в отрицательное число (естественно, если там есть положительное число и без всяких "абв"). Можно проверить:
=" 22 "*1
="( 22 )"*1
 
64 (утяжеленная :)  )
 
А чем формула отсюда http://www.planetaexcel.ru/techniques/2/81/ не устраивает?
или нужно ее сократить?
В столбце С может быть текст?
 
Цитата
А чем формула отсюда http://www.planetaexcel.ru/techniques/2/81/ не устраивает?

Но там же не ВПР, а нужно через ВПР.
Да, в столбце С может быть и текст.
--------------
86
Изменено: Владимир - 02.10.2014 14:56:54
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Я так и не понял задачу.
Нужно чтобы формула возвращала числа 20, 80, 90 ссылаясь только на ячейки E2; B2:B12; C2:C12?
В формуле должна использоваться функция ВПР, в виде =ВПР(...;B2:C12;...)?
Формула должна возвращать вертикальный массив из 3х элементов {20:80:90} или формула копируемая, возвращающая по одному значению?
 
ЛЕВБ(ВПР массивная - 114 знаков (но числа только как текст, если добавить -- текст будет ошибкой, устранить - удлинить формулу)
 
т.е. нужно, чтобы формула возвращала массив {20:80:90}?
 
58, но только уникальные(
 
Обычная формула - в первой ячейке 20, во второй 80, в третьей 90 и т.д.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 27 След.
Наверх