Страницы: 1
RSS
ЕСЛИМН в excel 2013, Аналог функции ЕСЛИМН в excel 2013
 
Приветствую, форумчане! Есть ли модуль, добавляющий функцию ЕСЛИМН или её аналог для версии 2013? Сама функция идёт с 2019 версий.
 
По старинке - вложенные ЕСЛИ. Для более точного ответа нужен конкретный пример.
Владимир
 
sokol92, Владимир, думаю ТС имеет в виду что нужно иметь совместимый UDF который бы позволил бы использовать то, чего нет.
По вопросам из тем форума, личку не читаю.
 
Max_E, нужно точное понимание для чего вам это. при определенных задачах может и функция ВЫБОР подойти
 
sokol92, StepanWolkoff, ТС поставил конкретный вопрос и он не о том что изменить чтоб не использовать отсутствующую функцию.
По вопросам из тем форума, личку не читаю.
 
Михаил, добрый день!
Написать UDF с именем IFS можно, но это не даст результата. Если мы создаем книгу в Excel 2016, формулы в которой вызывают UDF с именем IFS, а затем открываем ее в Excel 2019, то так и будет вызываться UDF. Для переключения на "родную" функцию нужно "переввести" формулу.
Наоборот еще хуже, в формуле будет функция _xlfn.IFS.
Так что, если хочешь, чтобы книга открывалась в Excel разных версий, то проверяй, когда функция появилась.
Владимир
 
sokol92, Владимир приветствую, так сие надо не мне, а ТСу пояснять.
По вопросам из тем форума, личку не читаю.
 
sokol92 спасибо за ваш ответ. Но мне нужна эта функция только для использования в моей текущей версии (2013 года)
 
См. ответ #2 - замените IFS (ЕСЛИМН) на вложенные IF (ЕСЛИ). Формула будет чуть длиннее.
Пример (из документации):
Код
=ЕСЛИМН(условие1; значение1; условие2; значение2; условиe3; значение3)

меняем на
Код
=ЕСЛИ(условие1; значение1; ЕСЛИ(условие2; значение2; ЕСЛИ(условиe3; значение3; НД())))
Изменено: sokol92 - 14.09.2022 18:30:55
Владимир
 
ну если по простому, то
Код
Function ifs(ParamArray args() As Variant) As Variant
    For I = LBound(args) To UBound(args) Step 2
        If args(I) Or (IsNumeric(args(I)) And args(I) <> 0) Then
            ifs = args(I + 1)
            Exit For
        End If
    Next
End Function
По вопросам из тем форума, личку не читаю.
 
Я бы в начале функции написал:
Код
ifs=CVErr(xlErrNA)
Владимир
 
sokol92, нет у меня оригинала, че оно там возвращает если нет вариантов не знаю :-).
По вопросам из тем форума, личку не читаю.
 
sokol92 Спасибо за ответ, попробую. Может и получится
 
Max_E, По идее и совет это был дан ранее и от темы он уводит. Учтите
https://support.microsoft.com/en-us/office/ifs-function-36329a26-37b2-467c-972b-4a39bd951d45
в примере там
=IFS(A2>89,"A",A2>79,"B",A2>69,"C",A2>59,"D",TRUE,"F")
что будет
=IF(A2>89,"A",IF(A2>79,"B",IF(A2>69,"C",If(A2>59,"D","F"))))
и это не сильно длиннее хотя даже первое можно записать наверно короче  
=IFS(A2>89,"A",A2>79,"B",A2>69,"C",A2>59,"D",1,"F")
А теперь как это может выглядеть без IF тут конечно есть некоторая сложность связанная с тем что нужно строго больше, но

=vlookup(-a2,{-999;{"A",-89;"B",-79;"C";-69;"D",-59;"F"})
или
=lookup(-a2,-{89,79,69,59},{"A","B","C","D","F"})
По вопросам из тем форума, личку не читаю.
 
У меня не получилось со вложенным если. Прикрепляю файл и опишу эту задачку. Если, в моём случае, площадь равна = 0, то результат выдаёт текст "Документы не предоставлены"; если S >= знач.Застраховано то "Замечаний нет"; если s>0 но < знач.Застраховано то "Предоставлен не полный комплект документов"
 
Вы пишете про формулу на листе "Право на землю" (ячейка B7)?
Владимир
 
sokol92 ячейка D2 лист Отчёт
 
Как правило, множественное если (ЕСЛИМН) в старых версиях Excel можно было заменить функцией ВПР с приближенным поиском (последний аргумент 1 или ИСТИНА). Но есть ряд ограничений - необходима вспомогательная таблица, как правило столбец поиска должен быть числовым, он должен быть упорядочен по возрастанию.
Сегодня придумал другое решение - использовать функцию ВЫБОР. Важно, что в этом случае условия должны быть взаимоисключающие, то есть в случае выполнения одного условия, все остальные должны быть ложными.
Синтаксис такой:
=ВЫБОР( LOG ( Условие1 * 2^1 + Условие2 * 2^2 + ... + УсловиеN * 2^N ; 2) ; Результат1 ; Результат2 ; ... ; РезультатN)

Как работает формула:
1. Единственное истинное условие даст единицу в соответствующем разряде в записи числа в двоичной системе счисления.
2. Извлечение логарифма даст номер разряда
3. Функция ВЫБОР вытаскивает из массива результатов тот, какое число получилось в пункте 2 (нужный разряд).

Почему я сделал эту формулу:
Через вложенные ЕСЛИ она гораздо более громоздкая, в какой-то момент Excel начал ругаться, что уровень вложенности превысил предел.
Формула должна работать на всех компьютерах и без использования макросов.

Может, кому-то будет полезно.
Страницы: 1
Наверх