Страницы: 1
RSS
Создание UDF-аналога функции УСЛОВИЯ (появилась в новом Excel)
 
Доброго вечера, уважаемые форумчане!
Не буду писать про помощь, т.к. своих наработок совсем нет (не знаю, как эти условия записывать). Тем не менее, нужна такая чудо-функция, как УСЛОВИЯ (что-то типа ЕСЛИМН).
Помогите, пожалуйста, кто-чем может  :D
И вообще подскажите, стоит ли игра свеч? Не шустрее ли будет классическая связка ИНДЕКС+ПОИСКПОЗ???

P.S.: с МАКСЕСЛИ и МИНЕСЛИ я как-то с полгода назад разобрался (нашёл решение через АГРЕГАТ и 2 пары UDF)
Изменено: Jack Famous - 13.09.2017 17:23:13
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Ну вот возьмите, поиграйтесь. Именно АНАЛОГ, без возможности добавить своё значение, если не будет ни одной ИСТИНЫ. В таком случае возвращается ЛОЖЬ
На универсальность не претендую, т.к. не тестировал во всех возможных вариациях. Примеры работы взяты из Вашей ссылки выше
Код
Function ЕСЛИИСТИНА(ParamArray Conditions())
'Conditions() - массив ПАР значений вида: Условие1;Значение_если_ИСТИНА_1;...;УсловиеN;Значение_если_ИСТИНА_N, обязательный
'               должен иметь хотя-бы одну пару значений.
For I = LBound(Conditions) To UBound(Conditions) Step 2
    If Application.Evaluate(Replace(Conditions(I), ",", ".")) Then
        ЕСЛИИСТИНА = Conditions(I + 1)
        Exit Function
    End If
Next
ЕСЛИИСТИНА = False
End Function
Согласие есть продукт при полном непротивлении сторон
 
Sanja, как всегда выручаете))) спасибо большое! Кстати, где-то именно у вас я и увидел как-то вот такую короткую запись для множества пар условий. Потестирую и выложу результаты…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Мда, в теории эта функция была куда круче…))) ещё раз большое спасибо вам, Sanja за помощь!  :idea:
Буду искать улучшения дальше…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал: в теории эта функция была куда круче…
Не понял...
Вариант, с возможностью указания (первым аргументом) значения, для варианта ЛОЖЬ
Код
Function ЕСЛИИСТИНА(iFalse, ParamArray Conditions())
'iFalse - значение, возвращаемое функцией, если не выполнено ни одно из условий
'Conditions() - массив ПАР значений вида: Условие1;Значение_если_ИСТИНА_1;...;УсловиеN;Значение_если_ИСТИНА_N, обязательный
'               должен иметь хотя-бы одну пару значений.
For I = LBound(Conditions) To UBound(Conditions) Step 2
    If Conditions(I) Then
        ЕСЛИИСТИНА = Conditions(I + 1)
        Exit Function
    End If
Next
ЕСЛИИСТИНА = iFalse
End Function
Изменено: Sanja - 13.09.2017 19:42:54
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Jack Famous написал #1:
нужна такая чудо-функция, как  УСЛОВИЯ
Сочинил две ЮДФки, которые, совместно с функциями ВЫБОР() или ИНДЕКС() работают
как аналоги функций 2016-го Экселя УСЛОВИЯ() и ПЕРЕКЛЮЧ().
Подробности и примеры - в прикреплённом:
Изменено: С.М. - 28.11.2017 17:10:52
 
Всем доброй пятничной ночи! Сегодня без тусовок)) Вот я балбес — тему создал и не подписался)))
Sanja, прошу прощения(((( большое вам спасибо за второй вариант! Под теорией (то, что вы не поняли) я имел ввиду то, что при разборе описания (оригинальной УСЛОВИЯ в справке Microsoft) ждал от неё большего.
Однако теперь, с вашей модернизацией, я точно найду ей применение!)))) пока потенциал её вижу только в том, что вместо
=ЕСЛИ(A1="понедельник";1;ЕСЛИ(A1="вторник";2;ЕСЛИ(A1="среда";3;"не подошло"))) можно писать
=ЕСЛИ("Не подошло";A1="понедельник";1;A1="вторник";2;A1="среда";3), что почти то же самое (только без повторения ЕСЛИ и скобок поменьше). Подскажите, если я слеп))))

С.М., спасибо за пример другой функции)) выглядит поинтересней, чем УСЛОВИЯ, но я так же не нашёл большого выигрыша для её использования. По-прежнему у меня в топе МАКСЕСЛИ и МИНЕСЛИ, а таже СцепитьЕсли от Димы «The_Prist» Щербакова. Последней нет в штаных функциях даже Excel 365 (напрасно), однако не упомянуть её я не мог)))
Эта ПЕРЕКЛЮЧ для меня, как ВПР (или ИНДЕКС+ПОИСКПОЗ) со вложенным массивом. То есть не нужно строить дополнительную табличку, вводи всё прямо в формулу. Ну такое))) я люблю прозрачность и всё контролировать, а тут для изменения/дополнения условий ещё и "вскрывать" функцию надо… Брррр. Не гоже.
Ваши примеры не понял (врать не буду  :D ) очень много всего)))

А вообще, уважаемые мастера, подскажите, какой выигрыш и в каких случаях эти новые функции дают? С удовольствием потестил бы  :idea:
Изменено: Jack Famous - 16.09.2017 00:36:33
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх