Вложенный ЕСЛИ, И/ИЛИ и текст
Учимся строить цепочки решений «если…то…иначе если…» и собирать или разбирать текст формулами.
Вложенный ЕСЛИ — это ЕСЛИ внутри ЕСЛИ: когда первое условие ложно, проверяется следующее, и так далее, пока не сработает одна из веток.
Зачем это нужно
Одного условия хватает не всегда. «Сдал/не сдал» — это один ЕСЛИ. А вот «2, 3, 4 или 5 по числу баллов» — это уже лесенка из нескольких порогов. Такие каскады встречаются повсюду: оценки, скидочные категории, уровни бонусов. Плюс к этому таблицы умеют работать с текстом — склеивать имя и фамилию, вырезать первые буквы кода, считать длину строки. Эти приёмы и разберём.
Вложенный ЕСЛИ: оценка по баллам
Функция ЕСЛИ(условие; значение_если_истина; значение_если_ложь) возвращает одно из двух значений. Чтобы получить больше двух исходов, в ветку «иначе» вкладывают новый ЕСЛИ. Переведём балл из ячейки A2 в школьную оценку по шкале: меньше 40 → «2», 40–59 → «3», 60–79 → «4», 80 и выше → «5».
=ЕСЛИ(A2<40; "2";
ЕСЛИ(A2<60; "3";
ЕСЛИ(A2<80; "4"; "5")))Читается сверху вниз: как только условие истинно, функция возвращает его ветку и дальше не смотрит. Поэтому пороги идут по нарастанию, и каждое следующее условие можно писать короче — нижняя граница уже «отсечена» предыдущим ЕСЛИ.
| Балл (A2) | Какое условие сработало | Оценка |
|---|---|---|
| 35 | A2 < 40 | 2 |
| 52 | A2 < 60 | 3 |
| 73 | A2 < 80 | 4 |
| 91 | иначе | 5 |
Балл 73 не прошёл первые два условия (не меньше 40, не меньше 60), но прошёл третье (меньше 80) — оценка «4». Формально оценку можно описать кусочной функцией:
$$ \text{оценка}(x) = \begin{cases} 2, & x \lt 40 \\ 3, & 40 \le x \lt 60 \\ 4, & 60 \le x \lt 80 \\ 5, & x \ge 80 \end{cases} $$
Логические И и ИЛИ внутри ЕСЛИ
Иногда ветка зависит от нескольких условий сразу. Тогда внутрь ЕСЛИ вкладывают функции И или ИЛИ:
И(усл1; усл2; ...)истинно, только если истинны ВСЕ условия;ИЛИ(усл1; усл2; ...)истинно, если истинно ХОТЯ БЫ ОДНО.
Пусть зачёт ставится, когда теория (A2) не меньше 50 И практика (B2) не меньше 50:
=ЕСЛИ(И(A2>=50; B2>=50); "зачёт"; "незачёт")А «нужна пересдача», если провален хотя бы один из двух предметов:
=ЕСЛИ(ИЛИ(A2<50; B2<50); "пересдача"; "ок")| A2 (теория) | B2 (практика) | И(≥50; ≥50) | Результат |
|---|---|---|---|
| 80 | 70 | ИСТИНА | зачёт |
| 80 | 30 | ЛОЖЬ | незачёт |
| 40 | 40 | ЛОЖЬ | незачёт |
Текстовые функции: СЦЕПИТЬ, ЛЕВСИМВ, ДЛСТР
Таблицы умеют не только считать, но и работать со строками.
СЦЕПИТЬ(текст1; текст2; ...)(или оператор&) склеивает строки в одну;ЛЕВСИМВ(текст; N)возвращает первые N символов слева (есть иПРАВСИМВ— справа);ДЛСТР(текст)возвращает длину строки (число символов).
Пусть в A2 — «Иванов», в B2 — «Пётр». Соберём «Фамилия И.»:
=СЦЕПИТЬ(A2; " "; ЛЕВСИМВ(B2; 1); ".")ЛЕВСИМВ(B2; 1) берёт первую букву имени — «П», между фамилией и инициалом добавлен пробел, в конце точка. Результат — Иванов П. То же самое через амперсанд: =A2&" "&ЛЕВСИМВ(B2;1)&".".
Как это работает
Вложенный ЕСЛИ — это последовательность проверок «если…иначе если…», а текстовые функции просто режут и склеивают строки по позициям. Повторим обе идеи на Python:
def ocenka(x):
if x < 40: return "2"
elif x < 60: return "3"
elif x < 80: return "4"
else: return "5"
for ball in [35, 52, 73, 91]:
print(ball, "->", ocenka(ball))
familia, imya = "Иванов", "Пётр"
kratko = familia + " " + imya[0] + "." # ЛЕВСИМВ(имя;1)
print(kratko, "| длина фамилии:", len(familia))Вывод:
35 -> 2 52 -> 3 73 -> 4 91 -> 5 Иванов П. | длина фамилии: 6
Конструкция if / elif / else один в один повторяет каскад вложенных ЕСЛИ, а срез imya[0] и len(...) делают то же, что ЛЕВСИМВ и ДЛСТР.
Частые ошибки
- Неверный порядок порогов. Если в каскаде сначала проверить
A2<80, то балл 35 тоже пройдёт это условие и получит «4». Пороги в цепочке ЕСЛИ обязаны идти от меньшего к большему. - Путают И и ИЛИ. «Зачёт по обоим предметам» — это
И(все условия), «провален хотя бы один» — этоИЛИ. Подмена меняет смысл на противоположный. - Незакрытые скобки. Каждый вложенный ЕСЛИ открывает свою скобку — в конце их должно быть столько же, сколько ЕСЛИ. Считайте скобки или используйте подсказки редактора.
- Забытый разделитель при склейке.
=A2&B2даст «ИвановПётр» без пробела. Разделитель (" ") нужно добавлять явно.
Итоги
- Вложенный ЕСЛИ даёт больше двух исходов: в ветку «иначе» кладут следующий ЕСЛИ, пороги идут по возрастанию.
Итребует истинности всех условий,ИЛИ— хотя бы одного; их вкладывают внутрь ЕСЛИ.СЦЕПИТЬ(или&) склеивает строки,ЛЕВСИМВвырезает первые символы,ДЛСТРсчитает длину.- Главные опасности — неверный порядок порогов, путаница И/ИЛИ и несбалансированные скобки.