Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы Excel (2 семестр).doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
188.42 Кб
Скачать

Логические функции.

ЕСЛИ(<условие>;<результат, если условие истинно;

[<результат, если условие ложно])

– функция оценивает логическое <условие>, и если оно истинно, возвращается первый результат, если нет – второй.

Пример 2:

Следующая функция в зависимости от результата сравнения содержимого числовых клеток А1 и В5 выдает первое "А больше В5" или второе "А1 меньше или равно В5" сообщение в клетке, куда она была внесена

=ЕСЛИ(А1>В5; "А1 больше В5";"А1 меньше или равно В5").

Здесь результатом является выражение текстового типа.

Пример. Пусть требуется выяснить не какое из чисел А1, В5 является большим, а показать само это число

=ЕСЛИ(А1>В5;А1;В5).

Результатом будет значение числового типа. Очевидно, что eго можно использовать в качестве слагаемого, сомножимого и т.п. Так корректным будет выражение вида

=5*ЕСЛИ(А1>В5;А1;В5)-24.

В функцию ЕСЛИ() могут включаться другие такие функции (до семи) для формирования более сложных условий. Положим, имеются три клетки А1, А2, A3, о которых нужно выяснить, правда ли, что значение А1 больше остальных. Эту функцию реализует следующая строка:

=ЕСЛИ(А1>В1;ЕСЛИ(А1>С1;"А1 самое большое”,

"А1 не самое большое");"А1 не самое большое").

Параметр <результат, если условие ложно> в функции ЕСЛИ() может быть опущен, тогда, если результат, полученный при анализе условия, ложен, функция вырабатывает логическое значение ЛОЖЬ. Обычно такого не следует допускать, но в некоторых случаях это позволяет немного упростить функцию ЕСЛИ(). Так, например, если она участвует в операции сложения, значение ЛОЖЬ интерпретируется как 0.

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

ЗАДАЧА 2. Торговый агент получает процент от суммы совершенной сделки. Если объем сделки до 3000, то 5%; если объем до 10 000, то 2%; если выше 10 000, то 1.5%. Введите в ячейку А10 текст "Объем сделки", в ячейку А11 – "Размер вознаграждения". В ячейку В10 введите объем сделки, а в В11 – формулу, вычисляющую размер вознаграждения.

ЗАДАЧА 3. Дать решение примеров 1 и 2(о принадлежности точки отрезку или одному из двух лучей) без использования функций И, ИЛИ, НЕ, а с помощью вложенных функций ЕСЛИ.

ЗАДАЧА 4. В трех ячейках записаны числа. Если все они ненулевые, вернуть 1, в противном случае 0. Решить задачу с использованием только одной функции ЕСЛИ (без вложений).

Упражнение 1. Что вернет функция ЕСЛИ, когда опущен третий аргумент функции, а условие в первом аргументе ложно? А когда опущен и второй аргумент?

И(<условие>;<условие>;…) – возвращает значение ИСТИНА, если истинны все аргументы. Функция еще называется функцией логического умножения.

ИЛИ(<условие>;<условие>;…) – возвращает значение ИСТИНА, если истинен хотя бы один из аргументов. Функция еще называется функцией логического сложения.

НЕ(<условие>) – возвращает значение ИСТИНА, если ложен аргумент и наоборот. Функция еще называется функцией отрицания или инверсии, поскольку ее значение всегда противоположно значению аргумента.

Пример. Выяснить, правда ли, что А1 больше остальных (решение предыдущей задачи):

ЕСЛИ(И(А1>А2;А1>АЗ);"А1 самое большое";"А1 не самое большое").

Пример: Выяснить, правда ли, что среди клеток есть отрицательные.

ЕСЛИ(ИЛИ(А2<0; АКО; А3<0); "Правда"; "Неправда").

Видим, что применение логических функций существенно упрощает запись сложных условий.

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

Разделяющее ИЛИ определяет событие, которое произойдет, если наблюдается только строго одно из условий-участников, но не несколько сразу. Если нам все-таки нужно описать условие, соответствующее разделяющему ИЛИ, нужно сформировать логическую функцию вида

ИЛИ(И(<условие1>;НЕ(<условие2>));И(НЕ(<условие1>);<условие2>)).

Пусть требуется сформировать конкретную функцию, выявляющую факт того, что только строго одна из клеток А1 или А2 больше 0

ЕСЛИ(ИЛИ(И(А1>0;НЕ(А2>0));И(НЕ(А1>0);А2>0));"ДА";"НЕТ")

или несколько проще

ЕСЛИ(ИЛИ(И(А1>0;А2<=0));И(А1<=0;А2>0));"ДА";"НЕТ").

Функция формирует ответ вида ДА/НЕТ.

Как видим, запись логической функции в Excel может быть достаточно громоздка и ненаглядна. Чтобы упростить выработку итогового выражения, иногда имеет смысл сначала написать его, используя более понятный способ записи

(А1>0 и НЕ(А2>0)) или (НЕ(А1>0) и А2>0)

В случае сложных логических выражений следует поступать подобным образом.

Пример. Рассмотрим аналогичный, но более сложный пример. Пусть нам требуется выяснить факт того, что только одна из четырех ячеек (А1, А2, A3, А4) больше нуля. Очевидное решение заключается в том, что перебираются все возможные комбинации аргументов, в которых только одно из значений больше нуля

=ЕСЛИ(ИЛИ(И(А1>0;А2<=0;АЗ<=0;А4<=0);

И(А1<=0;А2>0;АЗ<=;А4<=0);

И(А1<=0;А2<=0;АЗ>0;А4<=0);

И(А1<=0;А2<=0;А3<=0;А4>0)); "Правда"; "Неправда").

Получилось достаточно громоздко. Часто, однако, можно упростить решение, если подходить к нему "не в лоб". Здесь лучше не анализировать каждую из четырех возможных комбинаций значений этих ячеек, а поступить по-другому, воспользовавшись некоторым косвенным признаком, – для каждой из ячеек выяснить, больше ли она нуля. И, если больше, в качестве результата выработать 1 (например =ЕСЛИ(А1>0;1)). Теперь, если результат сложения таких элементарных выражений в точности равен 1, значит только одна из ячеек больше нуля. Тогда запишем:

=ЕСЛИ(ЕСЛИ(А1>0;1)+ЕСЛИ(А2>0;1)+

ЕСЛИ(А3>0;1)+ЕСЛИ(А4>0;1)=1;"Правда";"Неправда").

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

=ЕСЛИ((А1>0)+(А2>0)+(АЗ>0)+(А4>0)=1;"Правда";"Неправда").

Рассмотрим пример "из жизни".

ЗАДАЧА 5. Требуется построить таблицу выявления факта пригодности призывников к военной службе (Годен/Не годен), например, к зачислению в летное училище. Пусть это невозможно для лиц, имеющих недостаточные/избыточные значения антропометрических параметров (рост и вес). Положим, отклоняются кандидатуры ростом менее 150 см или более 200 см, а также с весом менее 55 кг или свыше 100 кг. На рис.5 представлен вид таблицы, который должен получиться в результате решения данной задачи

А

В

С

D

1

Призывник

Рост

Вес

Отбор

2

Иван

140

55

Не годен

3

Петр

175

76

Годен

Рис. 5

ЗАДАЧА 6. Требуется начислить праздничные премии работникам организации. На рис.6 показана структура данных, где на местах формул, которые нам нужно создать, пока стоят знаки

А

В

С

D

1

Месяц:

3

2

Работник

Пол

Зарплата

Премия

3

Иван

м

1000

?

4

Ольга

ж

1500

?

Рис. 6

Решим пример, последовательно усложняя его условия.

1. Положим, текущий месяц март и женщинам устанавливается премия в размере 300 руб. ко дню 8 марта. Иными словами

премия=ЕСЛИ(пол=женский, то 300 руб., иначе – 0 руб.).

Эту и дальнейшие формулы записать в терминах языка Excel и поместить в ячейки D3 и D4.

2. Очевидно, такое решение будет правильным в единственном месяце – марте. Если оставить все как есть, в апреле женщинам будет снова назначена премия, чего, конечно, не должно быть. Чтобы учесть этот фактор нужно учесть значение текущего месяца (клетка В1).

премия=ЕСЛИ(пол=женский И месяц=март, то 300 руб, иначе 0 руб),

3. Положим, что в феврале и мужчинам назначается премия.

премия=ЕСЛИ((пол=женский И месяц=март) ИЛИ

(пол=мужской И месяц=февраль),то 300 руб, иначе 0 руб),

4. Положим, что премия мужчинам и женщинам назначается по-разному: мужчинам 10% от зарплаты, женщинам – 300 руб. независимо от заработка.

премия=ЕСЛИ(пол=женский И месяц=март, то 300 руб, ЕСЛИ(пол=мужской И

месяц=февраль,то 10% от зарплаты, иначе 0 руб)),

5. Положим, что, кроме того, всем работникам назначается премия к Новому году в размере 500 руб. (представим эти величины как отдельные слагаемые).

премия=ЕСЛИ(пол=женский И месяц=март, то 300 руб) +ЕСЛИ(пол=мужской И

месяц=февраль, 10% зарплаты) +ЕСЛИ(месяц=январь,500 руб))