Вложенный ЕСЛИ, И/ИЛИ и текст

Учимся строить цепочки решений «если…то…иначе если…» и собирать или разбирать текст формулами.

Вложенный ЕСЛИ — это ЕСЛИ внутри ЕСЛИ: когда первое условие ложно, проверяется следующее, и так далее, пока не сработает одна из веток.

Зачем это нужно

Одного условия хватает не всегда. «Сдал/не сдал» — это один ЕСЛИ. А вот «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)Какое условие сработалоОценка
35A2 < 402
52A2 < 603
73A2 < 804
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)Результат
8070ИСТИНАзачёт
8030ЛОЖЬнезачёт
4040ЛОЖЬнезачёт

Текстовые функции: СЦЕПИТЬ, ЛЕВСИМВ, ДЛСТР

Таблицы умеют не только считать, но и работать со строками.

  • СЦЕПИТЬ(текст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 даст «ИвановПётр» без пробела. Разделитель (" ") нужно добавлять явно.

Итоги

  • Вложенный ЕСЛИ даёт больше двух исходов: в ветку «иначе» кладут следующий ЕСЛИ, пороги идут по возрастанию.
  • И требует истинности всех условий, ИЛИ — хотя бы одного; их вкладывают внутрь ЕСЛИ.
  • СЦЕПИТЬ (или &) склеивает строки, ЛЕВСИМВ вырезает первые символы, ДЛСТР считает длину.
  • Главные опасности — неверный порядок порогов, путаница И/ИЛИ и несбалансированные скобки.
Проверьте себя
1. По формуле =ЕСЛИ(A2<40;"2";ЕСЛИ(A2<60;"3";ЕСЛИ(A2<80;"4";"5"))) какую оценку получит балл 73?
A3
B4
C5
D2
2. Какая функция вернёт ИСТИНА, только если истинны ВСЕ перечисленные условия?
AИЛИ
BИ
CЕСЛИ
DСЦЕПИТЬ