Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
95
Добавлен:
20.04.2015
Размер:
1.13 Mб
Скачать

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

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

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

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

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

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

=ЕСЛИ(A1>B5; "A1 больше B5";"A1 меньше или равно B5").

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

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

=ЕСЛИ(A1>B5; A1; B5).

Результатом будет значение числового типа. Очевидно, что его можно использовать в качестве слагаемого, сомножимого и т.п. Так, корректным будет выражение вида =5*ЕСЛИ(A1>B5;A1;B5)-24.

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

=ЕСЛИ(A1>B1;ЕСЛИ(A1>C1;"A1 самое большое";

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

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

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

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

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

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

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

ЕСЛИ(И(A1>A2;A1>A3);"A1 самое большое";"A1 не самое большое").

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

ЕСЛИ(ИЛИ(A2<0; A1<0; A3<0); "Правда"; "Неправда").

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

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

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

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

ЕСЛИ(ИЛИ(И(A1>0;НЕ(A2>0));И(НЕ(A1>0);A2>0));"ДА";"НЕТ")

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

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

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

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

(A1>0 и НЕ(A2>0)) или (НЕ(A1>0) и A2>0)

или короче (A1>0 и A2>0) или (A1>0 и A2>0),

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

Замечание. Часто вместо функций И, ИЛИ удобно использовать операции умножения и сложения. Так для предыдущей задачи выявления того, что строго одна из клеток А1 или А2 больше 0 можно записать

=ЕСЛИ((A1>0)*(A2<=0)+(A1<=0)*(A2>0);"ДА";"НЕТ").

Здесь, если первые два условия удовлетворяются, формула приведет нас к результату следующего вида

=ЕСЛИ(1*1+0*0;"ДА";"НЕТ")=ЕСЛИ(1;"ДА";"НЕТ")="ДА",

Поскольку 1 (и вообще любое число не равное нулю) интерпретируется в Excel как ИСТИНА – ответом будет слово ДА.

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

=ЕСЛИ(ИЛИ(И(A1>0;A2<=0;A3<=0;A4<=0);

И(A1<=0;A2>0;A3<=0;A4<=0);

И(A1<=0;A2<=0;A3>0;A4<=0);

И(A1<=0;A2<=0;A3<=0;A4>0)); "Правда"; "Неправда").

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

=ЕСЛИ(ЕСЛИ(A1>0;1)+ЕСЛИ(A2>0;1)+

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

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

=ЕСЛИ((A1>0)+(A2>0)+(A3>0)+(A4>0)=1;"Правда";"Неправда").

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

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

=ЕСЛИ(рост<150 ИЛИ рост>200 ИЛИ вес <55 ИЛИ вес>100,

то Не годен, иначе Годен).

Или в виде формулы для первой строки таблицы на рис. 4.7-1.

D2=ЕСЛИ(ИЛИ(B2<150; B2>200; C2<55; C2>100);"Не годен";"Годен"),

Аналогичные результаты можно получить с помощью логической функции, в некотором смысле обратной к исходной. Для этого следует все функции И() заменить на ИЛИ() и, наоборот, перевернуть условия на противоположные и поменять местами вырабатываемые результаты (Годен/Нет):

D2=ЕСЛИ(И(B2>=150;B2<=200;C2>=55;C2<=100);"Годен";"Нет")

A

B

C

D

1

Призывник

Рост

Вес

Отбор

Рис. 4.7-1

2

Иван

140

55

Не годен

3

Петр

175

76

Годен

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

=ЕСЛИ(условие1; ответ_да_1;

ЕСЛИ(условие2; ответ_да_2;

ЕСЛИ(условие3; ответ_да_3;

ответ_нет_3))).

Здесь после проверки условия (например, условия1) сначала записывается выражение, соответствующее реакции функции при истинности анализируемого условия (ответ_да_1), а только затем проверяется следующее условие2 и т.д.

Или =ЕСЛИ(условие1; ответ_да_1;

ЕСЛИ(условие2; ответ_да_2;

ЕСЛИ(условие3; ответ_да_3; ответ_нет_3))).

Пример. Пусть требуется вычислить значения кусочно-ломанной функции Y(X) следующего вида

5+Х при Х<0,

Y= 5 при 0Х<10,

10-0,5X при 10Х.

в диапазоне изменения аргумента Х от -6 до +16 с шагом 2.

Значения Х и Y находятся в строках 1 и 2 таблицы (рис. 4.7-2).

Здесь Y=ЕСЛИ(X<0;5+X;ЕСЛИ(И(0<=X;X<10);5;10-0,5*X))

или в адресах для первого значения Y

B2=ЕСЛИ(B1<0;5+B1;ЕСЛИ(И(0<=B1;B1<10);5;10-0,5*B1))

или проще

B2=ЕСЛИ(B1<0;5+B1;ЕСЛИ(B1<=10;5;10-0,5*B1)).

A

B

C

D

E

F

G

H

I

J

K

L

M

1

X

- 6

- 4

- 2

0

2

4

6

8

10

12

14

16

2

Y

-1

1

3

5

5

5

5

5

5

4

3

2

Рис. 4.7-2

Упрощение стало возможным поскольку, если в первом ЕСЛИ() условие В1<0 неверно, значит обязательно верно противоположное условие В1>=0. Таким образом, выяснять это больше не нужно.

Рис. 4.7-3

Вообще, вложенных функций ЕСЛИ() должно быть на единицу меньше, чем возможных диапазонов данных. В нашем случае, поскольку ось абсцисс Х разбита на три интересующих нас подмножества, должно быть две функции ЕСЛИ(). Диаграмма функции, построенная с помощью средств деловой графики Excel из таблицы рис. 4.7-2, приведена на рис. 4.7-3.

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

Пример. Положим, банковский процент следующим образом зависит от величины вклада, находящегося в ячейке А1 (в верхней строке рисунка показаны значения процентов, в нижней – диапазоны вкладов).

Процент:

10%

12%

14%

17%

20%

Вклад:

до 10т

до 20т

до 30т

до 40т

свыше 40т

Таким образом, здесь для вклада размером до 10 тыс. банковский процент составляет 10%, при вкладе от 10 до 20 тыс. – 12% и т.д.

Здесь можно записать, например, следующее выражение для вычисления прибавки к вкладу по истечении года хранения

=А1*ЕСЛИ(А1<10;10%;

ЕСЛИ(И(А1>=10;А1<20);12%;

ЕСЛИ(И(А1>=20;А1<30);14%;

ЕСЛИ(И(А1>=30;А1<40);17%;20%)))).

Так как диапазонов пять, нам понадобилось выражение с четырьмя функциями ЕСЛИ(). Невыполнение четырех перечисленных условий, обязательно будет указывать на факт того, что вклад>40, чему соответствует 20% прибыли. Поскольку ограничения для каждого диапазона здесь указаны с обоих сторон, порядок перечисления и анализа условий безразличен. В данном случае логическое выражение, хотя и правильно, но избыточно. Функцию можно упростить, если при выполнении сравнений двигаться строго в одном направлении, в сторону увеличения анализируемого параметра, используя знак отношения меньше (“<”)

=А1*ЕСЛИ(А1<10;10%; ЕСЛИ(А1<20;12%;

ЕСЛИ(А1<30;14%; ЕСЛИ(А1<40;17%;20%))))

или в сторону уменьшения, используя знак отношения больше (“>”.)

=А1*ЕСЛИ(А1>=40;20%; ЕСЛИ(А1>=30;17%;

ЕСЛИ(А1>=20;14%; ЕСЛИ(А1>=10;12%;10%)))).

Поясним последнее выражение, в предположении что А1=25, т.е.

=25*ЕСЛИ(25>=40;20%; ЕСЛИ(25>=30;17%;

ЕСЛИ(25>=20;14%; ЕСЛИ(25>=10;12%;10%)))).

Анализ условий выполняется слева направо и поскольку А1 меньше 40 и меньше 30 – первые два условия ложны. Отношение А1>=20 является первым истинным условием в логической цепочке. Его результатом будет 14% и на этом анализ условий и вычисления прекращаются.

=25*ЕСЛИ(ЛОЖЬ;20%; ЕСЛИ(ЛОЖЬ;17%;

ЕСЛИ(ИСТИНА;14%; ЕСЛИ(25>=10;12%;10%)))) = 25*14%.

это условие уже не анализируется

Выражение может быть весьма запутанным, в особенности, если результатом сравнения является не просто какое-нибудь число (как в нашем примере), а некоторая функция. В подобных случаях бывает удобно разбить такое выражение на ряд более простых, например, на несколько сомножимых (но при этом придется вернуться к заданию всех ограничивающих условий).

=А1*ЕСЛИ(А1<10;10%;1)*

ЕСЛИ(И(А1>=10;А1<20);12%;1)*

ЕСЛИ(И(А1>=20;А1<30);14%;1)*

ЕСЛИ(И(А1>=30;А1<40);17%;1)*

ЕСЛИ(А1>=40;20%;1).

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

= А1*1*1*14%*1*1 =А1*14%.

Можно решить задачу, представив функцию и рядом слагаемых:

=А1*(ЕСЛИ(А1<10;10%;0)+

ЕСЛИ(И(А1>=10;А1<20);12%;0)+

ЕСЛИ(И(А1>=20;А1<30);14%;0)+

ЕСЛИ(И(А1>=30;А1<40);17%;0)+

ЕСЛИ(А1>=40;20%;0)).

Аргумент 0 в функциях ЕСЛИ() можно опустить

=А1*(ЕСЛИ(А1<10;10%)+ЕСЛИ(И(А1>=10;А1<20);12%)+ ... )).

Для того же вклада будет получено (нули на сумму не влияют):

=А1*(0+0+14%+0+0)=А1*(14%).

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

Еще пример “из жизни”. Пусть нужно начислить праздничные премии или материальную помощь работникам организации. На рис. 4.7-4 показана структура данных, где на местах формул, которые нам нужно создать, пока стоят знаки “?”.

A

B

C

D

E

1

Месяц:

3

2

Работник

Пол

Зарплата

Детей

Премия

3

Иван

м

1000

2

?

4

Ольга

ж

1500

4

?

5

Петр

м

3000

1

?

Рис. 4.7-4

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

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

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

Или в виде клеточной функции E3=ЕСЛИ(B3="ж";300;0).

Можно в обратной постановке E3=ЕСЛИ(B3="м";0;300).

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

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

E3=ЕСЛИ(И(B3="ж";B$1=3);300;0).

Или в обратной постановке

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

E3=ЕСЛИ(ИЛИ(B3="м";B$1<>3);0;300).

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

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

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

E3=ЕСЛИ(ИЛИ(И(B3="ж";B$1=3);И(B3="м";B$1=2));300;0).

В обратной постановке

E3=ЕСЛИ(И(ИЛИ(B3="м";B$1<>3);ИЛИ(B3="ж";B$1<>2));0;300).

4. Положим, что премия мужчинам и женщинам назначается по-разному: мужчинам 10% от зарплаты, женщинам – 300 руб. независимо от заработка. Поскольку теперь премия имеет три значения (0, 10% и 300 руб.), то понадобится две функции ЕСЛИ( ).

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

ЕСЛИ(пол=мужской И месяц=февраль,

то 10% от зарплаты, иначе 0 руб)),

E3=ЕСЛИ(И(B3="ж";B$1=3);300;ЕСЛИ(И(B3="м";B$1=2);10%*С3;0))

или несколько проще, если разбить выражение на два слагаемых

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

+ЕСЛИ(пол=мужской И месяц=февраль, то 10% зарплаты),

E3=ЕСЛИ(И(B3="ж";B$1=3);300)+ЕСЛИ(И(B3="м";B$1=2);10%*C3).

Такое решение делает формулу более прозрачной. Посмотрим, каков будет результат, в разных (январь, февраль, март) месяцах

I – ЕСЛИ(И(B3="ж";B$1=3);300)+ЕСЛИ(И(B3="м";B$1=2);10%*C3) =0+0=0

II – ЕСЛИ(И(B3="ж";B$1=3);300) + 0 [300р. только женщинам]

III – 0 + ЕСЛИ(И(B3="м";B$1=2);10%*C3) [10% только мужчинам].

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

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

+ЕСЛИ(пол=мужской И месяц=февраль, 10% зарплаты)

+ЕСЛИ(месяц=январь,500 руб)),

E3=ЕСЛИ(И(B3="ж";B$1=3);300)

+ЕСЛИ(И(B3="м";B$1=2);10%*C3)+ЕСЛИ(B$1=1;500).

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

премия=ЕСЛИ(пол=женский;

ЕСЛИ(детей*200>зарплата; зарплата; детей*200;0)).

Или проще, если выделить признак пол=женский в отдельный множитель, который может принимать одно из двух значений 1 или 0

премия=ЕСЛИ(детей*200>зарплата; зарплата; детей*200;0)

*ЕСЛИ(пол=женский;1;0)

E3=ЕСЛИ(D3*200>C3;C3;D3*200)*ЕСЛИ(B3="ж";1;0).

Или даже

E3=ЕСЛИ(D3*200>C3;C3;D3*200)*(B3="ж").

Можно заменить функцию ЕСЛИ( ) на функцию МИН( ). Тогда

E3=МИН(D3*200;C3)*(B3="ж").

7. Назначить помощь на детей: на первого ребенка 100 руб., на второго – 150 руб., на третьего – 250 руб., на следующих детей помощь не увеличивается

премия=ЕСЛИ(детей=1;100; ЕСЛИ(детей=2;100+150;

ЕСЛИ(детей>=3;100+150+250;0)))

E3=ЕСЛИ(D3=1;100; ЕСЛИ(D3=2;250; ЕСЛИ(D3>=3;500;0))).

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

Решите следующие задачи самостоятельно.

8. Выдать в марте премию в 500 руб. женщинам, получающим зарплату до 1000 руб.

9. Выдать к 1 мая премию в 500 руб. всем работникам, получающим зарплату до 1000 руб., а остальным – в размере 20% от зарплаты.

10. То же, но премия не должна быть не более 800 руб.

П

Этаж

Двор

Евро

1

1

2

1

+

3

1

+

4

1

+

+

5

8

6

8

+

7

8

+

8

8

+

+

9

другие

этажи

+

10

+

11

+

+

12

Рис. 4.7-5

ример. Положим, вы представляете строительную фирму, которой требуется продать квартиры в построенном доме. Средняя цена 1 кв. метра площади известна (себестоимость дома деленная на общую площадь плюс прибыль), но его цена в каждой конкретной квартире может быть различной в зависимости от ее потребительских качеств (этажа, направления окон, уровня отделки). Фирмой установлено, что покупателям квартир на 1 этаже делается скидка в 20%, а жильцам последнего 8-го – 10%. Если окна квартиры выходят во двор – вводится наценка в 15%. Если она отделана в соответствии с евростандартами – наценка в 40%. Очевидно, что в доме возможна любая комбинация этих параметров и всего их 12 (рис. 4.7-5). Если подойти к решению задачи непосредственно (обозначим перечисленные параметры словами Этаж, Двор, Евро, а наличие последних двух – знаком ”+”), нам для вычисления продажной цены одного метра площади придется построить грандиозное выражение, закрывающееся 11 скобками

<продажная цена 1 кв. м>=<средняя цена 1 кв. метра>*

ЕСЛИ(И(Этаж=1;Двор”+”;Евро”+”) то 1-20%; иначе

ЕСЛИ(И(Этаж=1;Двор”+”;Евро=”+”) то 1-20%+40%; иначе

ЕСЛИ(И(Этаж=1;Двор=”+”;Евро”+”) то 1-20%+15%; иначе

ЕСЛИ(И(Этаж=1;Двор=”+”;Евро=”+”) то 1-20%+15%+40%;иначе

ЕСЛИ(И(Этаж=8;Двор”+”;Евро”+”) то 1-10%; иначе

ЕСЛИ(И(Этаж=8;Двор”+”;Евро=”+”) то 1-10%+40%; иначе

ЕСЛИ(И(Этаж=8;Двор=”+”;Евро”+”) то 1-10%+15%; иначе

ЕСЛИ(И(Этаж=8;Двор=”+”;Евро=”+”) то 1-10%+15%+40%;иначе

ЕСЛИ(И(Двор”+”;Евро=”+”) то 1+40%; иначе

ЕСЛИ(И(Двор=”+”;Евро”+”) то 1+15%; иначе

ЕСЛИ(И(Двор=”+”;Евро=”+”) то 1+15%+40%; иначе 1))))))))))).

Замечание. Последняя группа из четырех условий не содержит указаний на этаж, поскольку предыдущие условия исключают возможность “пропуска” в эту часть выражения 1-го и 8-го этажей.

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

Упрощение возможно, если учитывать влияющие факторы отдельно, как слагаемые к 100% средней цены одного метра

<продажная цена 1м>=<средняя цена 1м>*

(1+ЕСЛИ(Этаж=1, то -20%, иначе 0)

+ЕСЛИ(Двор=”+”, то 15%, иначе 0)

+ЕСЛИ(Евро=”+”, то 40%, иначе 0)

+ЕСЛИ(Этаж=8, то -10%, иначе 0)).

Положим, покупается квартира на 8-м этаже с евроотделкой и окнами во двор. Тогда мы получим

=<средняя цена 1м>*(1+0+15%+40%-10%)

или

=<средняя цена 1м>*(1+45%)=<средняя цена 1м>*145%.

Если предположить, что сведения о влияющих параметрах данной квартиры расположены в клетках С4, D4, E4 соответственно, а средняя цена – в А2, то можем записать выражение как формулу Excel совсем просто

=А2*(1+ЕСЛИ(С4=1;-20%)+ЕСЛИ(D4=”+”;15%)

+ЕСЛИ(E4=”+”;40%)+ЕСЛИ(С4=8;-10%).

Пример. Положим, некоторым категориям жильцов положена скидка при оплате квартплаты: инвалидам – в 70%, участникам войны – 50%, многодетным – 25%. Или в содержательной форме

<квартплата>=<номинальная квартплата>*(1-

ЕСЛИ(Инвалид, то 70%, иначе 0)-

ЕСЛИ(Участник, то 50%, иначе 0)-

ЕСЛИ(Многодетный, то 25%, иначе 0)).

Пусть, сведения о номинальной квартплате находятся в клетке А1, а информация об инвалидности, участии и многодетности – в С3, D3, E3. Тогда можем построить формулу Excel

=А1*(1-ЕСЛИ(С3=”и”;70%)-ЕСЛИ(D3=”у”;50%)-ЕСЛИ(E3=”м”;25%).

Буквами “и”, “у”, “м” обозначены соответствующие признаки.

Здесь мы обнаруживаем, что общая скидка может достигать величины более 100% (до 145%), если наблюдаются все льготы, что, конечно, недопустимо. Наша функция должна быть усложнена так, чтобы ограничить льготы до 100%

=А1*(1-МИН(ЕСЛИ(С3=”и”;70%)+ЕСЛИ(E3=”у”;50%)

+ЕСЛИ(D3=”м”;25%); 100%)).

Здесь от 1 (от 100%) отнимается минимальное значение из суммы всех льгот и 100%. Таким образом, если сумма льгот больше 100%, размер квартплаты будет =А1*(1-100%)=0, в противном случае =А1*(1-сумма льгот в процентах).

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

=А1*(1-МАКС(ЕСЛИ(С3=”и”;70%);ЕСЛИ(E3=”у”;50%);ЕСЛИ(D3=”м”;25%)).

Иными словами: =А1*(1-максимальная из льгот).

Замечание. Функции МАКС( ) и МИН( ) будут рассмотрены позже.

Соседние файлы в папке EXCEL (Попов)