С подачи некоторых "формульнутых", вопреки жадности некоторых кошачьих и благодаря несказанной доброте некоторых из семейства модераторов открылись двери Избушки Для тех, кто не видел двух нижних этажей: Усовершенствование формул. Избушка формУлистов Усовершенствование формул. Избушка формУлистов-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
знатоки формулами помогут... и макросописатели тоже
Михаил стал макросописателем :) Поможем живым формулой массива: =ИНДЕКС(E1:E7;МАКС(ЕСЛИ(ЕЧИСЛО(ПОИСК("*"&ПСТР(A1;1;1)&"*"&ПСТР(A1;2;1)&"*"&ПСТР(A1;3;1)&"*"&ПСТР(A1;4;1)&"*";E1:E7));СТРОКА(1:7))))
Шутки шутками, но: - с таким названием - в курилку (перенести?); - думаем о других - название не отражает сути задачи (как переименовать?)?
Но... сомневаюсь я... Автора! :) Может, в Избушке пыль протереть?
Не определился я, что более интересно: макросы или формулы, а вот ВПРы штамповать поднадоело уже.
Цитата
Поможем живым формулой массива
Виктор, зачем все эти МАКС, ЕЧИСЛО, СТРОКА, когда можно короче? Еще днем формулу написал, но не стал выкладывать, из-за не полной универсальности (не более 4 букв исходного слова воспринимает)
Хватит о покойниках. Давайте о производстве ценного продукта(Задача 2) Нередко "опытные" пользователи Excel при заполнении таблиц заносят ералаш в одну ячейку, а после бегают по сети с просьбами разделить это убожество на удобоваримые данные. В приложенном файле пример такого заполнения.
Делить мы не будем. Производителям понадобилось извлечь числовые данные. Убытки ли, прибыль будут подсчитывать, нам неведомо. Нам важнее другое: - числовые данные находятся в конце текстовой строки в скобках; - число есть в каждом тексте; - число может быть целым или с n знаков после запятой; - левее и правее числа могут быть пробелы в любом количестве (условимся, что в скобках может быть не более 15 знаков); - как обычно, нужна формула без вспомогательных имен и прочих инструментов.
Формула есть. Размер - небольшая Бонусный вопрос: что производится на секретном предприятии?
Не знаю, интересно будет иль нет. Но до сих пор, предлагался вариант "Многоразового ВПР" лишь через ЮДФ и макросы. Есть формульный вариант. Массивный. Думаю, что кто-то что-то более прогрессивней предложит. Вы ведь лучшие в этом мире, Планетяе... :D --------------------------------------------------------------- Задача № 3 - "Многоразовый ВПР" Не важно текст или число.
Вить, давай, объясняй, как последний шаг работает.
Вот это и породило задачу. Случайно обнаружил: текст в скобках преобразуется в отрицательное число (естественно, если там есть положительное число и без всяких "абв"). Можно проверить: =" 22 "*1 ="( 22 )"*1
Я так и не понял задачу. Нужно чтобы формула возвращала числа 20, 80, 90 ссылаясь только на ячейки E2; B2:B12; C2:C12? В формуле должна использоваться функция ВПР, в виде =ВПР(...;B2:C12;...)? Формула должна возвращать вертикальный массив из 3х элементов {20:80:90} или формула копируемая, возвращающая по одному значению?