Доброго вечера, уважаемые форумчане! Не буду писать про помощь, т.к. своих наработок совсем нет (не знаю, как эти условия записывать). Тем не менее, нужна такая чудо-функция, как УСЛОВИЯ (что-то типа ЕСЛИМН). Помогите, пожалуйста, кто-чем может И вообще подскажите, стоит ли игра свеч? Не шустрее ли будет классическая связка ИНДЕКС+ПОИСКПОЗ???
P.S.: с МАКСЕСЛИ и МИНЕСЛИ я как-то с полгода назад разобрался (нашёл решение через АГРЕГАТ и 2 пары UDF)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Ну вот возьмите, поиграйтесь. Именно АНАЛОГ, без возможности добавить своё значение, если не будет ни одной ИСТИНЫ. В таком случае возвращается ЛОЖЬ На универсальность не претендую, т.к. не тестировал во всех возможных вариациях. Примеры работы взяты из Вашей ссылки выше
Код
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 за помощь! Буду искать улучшения дальше…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
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
Jack Famous написал #1: нужна такая чудо-функция, как УСЛОВИЯ
Сочинил две ЮДФки, которые, совместно с функциями ВЫБОР() или ИНДЕКС() работают как аналоги функций 2016-го Экселя УСЛОВИЯ() и ПЕРЕКЛЮЧ(). Подробности и примеры - в прикреплённом:
Всем доброй пятничной ночи! Сегодня без тусовок)) Вот я балбес — тему создал и не подписался))) Sanja, прошу прощения(((( большое вам спасибо за второй вариант! Под теорией (то, что вы не поняли) я имел ввиду то, что при разборе описания (оригинальной УСЛОВИЯ в справке Microsoft) ждал от неё большего. Однако теперь, с вашей модернизацией, я точно найду ей применение!)))) пока потенциал её вижу только в том, что вместо =ЕСЛИ(A1="понедельник";1;ЕСЛИ(A1="вторник";2;ЕСЛИ(A1="среда";3;"не подошло"))) можно писать =ЕСЛИ("Не подошло";A1="понедельник";1;A1="вторник";2;A1="среда";3), что почти то же самое (только без повторения ЕСЛИ и скобок поменьше). Подскажите, если я слеп))))
С.М., спасибо за пример другой функции)) выглядит поинтересней, чем УСЛОВИЯ, но я так же не нашёл большого выигрыша для её использования. По-прежнему у меня в топе МАКСЕСЛИ и МИНЕСЛИ, а таже СцепитьЕсли от Димы «The_Prist» Щербакова. Последней нет в штаных функциях даже Excel 365 (напрасно), однако не упомянуть её я не мог))) Эта ПЕРЕКЛЮЧ для меня, как ВПР (или ИНДЕКС+ПОИСКПОЗ) со вложенным массивом. То есть не нужно строить дополнительную табличку, вводи всё прямо в формулу. Ну такое))) я люблю прозрачность и всё контролировать, а тут для изменения/дополнения условий ещё и "вскрывать" функцию надо… Брррр. Не гоже. Ваши примеры не понял (врать не буду ) очень много всего)))
А вообще, уважаемые мастера, подскажите, какой выигрыш и в каких случаях эти новые функции дают? С удовольствием потестил бы
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄