Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Заготовки Excel Ишкова.doc
Скачиваний:
376
Добавлен:
15.05.2015
Размер:
1.92 Mб
Скачать

Использование вложенных функций если()

Ранее рассматривались задачи, в которых путь решения выбирался в зависимости от двух ситуаций: выполняется условие или не выполняется условие. И, если условие выполнялось, то вычисления производились по Формуле 1, а иначе – по Формуле 2. При этом условия могли быть как простыми, так и сложными.

Очень часто приходится решать задачи с множественным выбором, когда путь решения задачи выбирается в зависимости от трех и более ситуаций. При решении таких задач используются вложенные ЕСЛИ() – в качестве аргумента (аргументов) одной функции ЕСЛИ() используются другие функции ЕСЛИ() .

Рассмотрим задачу вычисления процента премии в зависимости от стажа работы сотрудника.

Если стаж меньше или равен 10 годам, то сотрудник получает 30% от базовой премии. Если стаж большее 10 лет, но меньше или равен 25 годам, то сотрудник получает 60% от базовой премии. В остальных случаях сотрудник получает всю базовую премию.

Из Error: Reference source not found видно, что нужно рассмотреть 3 ситуации.

Вопрос в том, сколько функций ЕСЛИ() нужно использовать для рассмотрения всех ситуаций.

Для каждой ситуации попытаемся определить, какое наибольшее количество вопросов нужно задать, чтобы определить размер премии? Последовательно будем задавать вопросы про каждый интервал, начиная с меньшего. Если получаем ответ ДА, то заканчиваем вопросы.

Рассмотрим ситуации, когда Стаж=7; Стаж=18; Стаж=27.

  1. Стаж=7.

Вопросы: Стаж < 10 ? ДА. 1 вопрос.

  1. Стаж=18.

Вопросы: Стаж < 10 ? НЕТ. Стаж < 25? ДА. 2 вопроса.

Если на вопрос «Стаж < 10?» получен ответ НЕТ, то понятно, что не нужно задавать вопрос «Стаж >= 10?», подразумевается, что на него получен ответ ДА.

  1. Стаж=27

Вопросы: Стаж < 10 ? НЕТ. Стаж < 25? НЕТ. 2 вопроса.

Если на вопрос «Стаж < 25?» получен ответ НЕТ, то понятно, что не нужно задавать вопрос «Стаж >= 25?», подразумевается, что на него получен ответ ДА.

Наибольшее количество вопросов определяет количество используемых функций ЕСЛИ(), так как каждый вопрос подразумевает анализ очередного условия. В данном случае необходимо использовать две функции ЕСЛИ().

Более формальное правило определение количества функций ЕСЛИ():

  • Одну функцию ЕСЛИ() можно использовать тогда, когда нужно рассмотреть 2 ситуации.

  • В случае множественного выбора из 3-х ситуаций нужно использовать 2 функции ЕСЛИ().

  • В случае множественного выбора из 4-х ситуаций нужно использовать 3 функции ЕСЛИ().

  • В случае множественного выбора из N ситуаций нужно использовать N-1 функцию ЕСЛИ().

На Error: Reference source not found приведен фрагмент блок-схемы множественного выбора из 3-х ситуаций. Для проверки условия здесь используется логический блок. Количество логических блоков соответствует количеству используемых функций ЕСЛИ().

Рассмотрим решение задачи «Выплата премии» в среде табличного процессора.

Рис. 15. Вложенные ЕСЛИ()

Обозначим базовую премию, как БП. Тогда расчет премии в терминах функции ЕСЛИ() будет выглядеть, как это показано на Рис. 15:

ЕСЛИ(Стаж<10;30%*БП;ЕСЛИ(СТАЖ<25;60%*БП;БП))

ЕСЛИ(Усл.1. ;Формула 1; Формула 2)

Если Усл.1. выполняется, то вычисляется Формула 1, иначе (Усл.1 не выполняется), вычисления производятся по Формуле 2.

В данном случае Формула 2 содержит еще одно ЕСЛИ(), выполнение которого происходит по уже известному алгоритму (Рис. 15).

Формула 2: ЕСЛИ(СТАЖ<25; 60%*БП ; БП)

ЕСЛИ(Усл. 2 ; Формула 3; Формула 4)

На Error: Reference source not found приведен пример расчета премии для нескольких сотрудников.

Рассмотрим сначала 12-ю строчку электронной таблицы. Она соответствует сотруднику Борисову, стаж которого - 3 года. Для него логическое выражение С12<10 имеет значение ИСТИНА – (3 < 10), поэтому вычисления проводятся по Формуле 1. Для Борисова премия составляет 30% от базовой премии.

Рассмотрим 11-ю строчку электронной таблицы. Она соответствует сотруднику Ананьеву, стаж которого – 18 лет. Для него логическое выражение С11<10 имеет значение ЛОЖЬ – (18 < 10), поэтому вычисления проводятся по Формуле 2. Но Формула 2 снова содержит ЕСЛИ(), в котором анализируется выражение С11<25. В данном случае оно принимает значение ИСТИНА – (18<25), и вычисления производятся по Формуле 3. Ананьев получил 60% от базовой премии.

15-я строчка соответствует сотруднику Данилову, стаж работы которого – 27 лет. Для него логическое выражение С15<10 принимает значение ЛОЖЬ – (25 <10), поэтому вычисления проводятся по Формуле 2. Но Формула 2 снова содержит ЕСЛИ(), в котором анализируется выражение С15<25. В данном случае оно снова принимает значение ЛОЖЬ – (27<25), и вычисления производятся по Формуле 4. Данилов получил всю базовую премию.

При решении задачи с вложенными ЕСЛИ() работа разбивается на следующие этапы:

  1. Запустить Мастер функцийи выбрать функцию ЕСЛИ().

  2. В окнеАргументы функциипервой функции ЕСЛИ() и ввести значения в поляЛог_выражениеиЗначение_если_истина(Error: Reference source not found).

  1. Щелкнуть в поле Значение_если_ложь, выбрать новую функцию ЕСЛИ и в окнеАргументы функциидлявложеннойфункции ЕСЛИ() (Error: Reference source not found) ввести значения в поляЛог_выражениеиЗначение_если_истина новой функции ЕСЛИ().

  1. Если больше вложенных функций нет, то ввести значение в поле Значение_если_ложьи закончить работу с Мастером, нажав ОК. Если еще есть вложенные функции, то необходимо повторить действия с шага 3.

На Error: Reference source not found показано окно Аргументы функциидля второй функции ЕСЛИ() со значениями всех аргументов. Это окно можно вызвать из строки формул с помощью клавишSHIFT-F3, находясь в поле первой функции.

Для корректировки значений аргументов любой функции достаточно перейти в строку формул в поле нужной функции и нажать SHIFT-F3.

На Error: Reference source not found и Error: Reference source not found показана поэтапная работа с Мастером функций для сотрудника Ананьева (11 строчка электронной таблицы), чей стаж равен 18 годам.

В окне Аргументы Функциипервой функции ЕСЛИ() –(Error: Reference source not found) рядом с логическим выражением С11<10 стоит его значение – ЛОЖЬ.

В окне Аргументы Функциивложенной функции ЕСЛИ() – Error: Reference source not found, рядом с логическим выражением С11<25 стоит его значение – ИСТИНА. Значит, вычисления будут производиться по формуле, находящейся в полеЗначение_если_истина. Полученный размер премии равен 6000. В нижней части окна видно и значение вложенной функции – 6000.

На Error: Reference source not found видны окончательные результаты решения задачи для сотрудника Ананьева. Показаны значения всех аргументов функции ЕСЛИ(), одним из которых (значение_если_ложь) является вложенная функция ЕСЛИ() и значение всей функции.