Почему логическое «или» в Excel работает не так, как вы думаете
Вы когда-нибудь пытались написать в Excel формулу с условием «если это ИЛИ то» — и получали ошибку #ЗНАЧ!? Или формула работала, но выдавала неожиданные результаты? Проблема в том, что логический оператор «или» в Excel имеет несколько форм записи, и каждая из них ведёт себя по-разному. Например, OR() и символ | (вертикальная черта) на первый взгляд делают одно и то же, но на практике первый вариант часто предпочтительнее для сложных условий, а второй — для компактных выражений.
В этой статье разберём 5 способов записать «или» в формулах — от элементарных до продвинутых, включая комбинации с IF, массивы и даже альтернативные функции вроде XOR. Вы узнаете, почему иногда OR возвращает ЛОЖЬ, когда должно быть ИСТИНА, как обойти ограничения старой версии Excel 2010, и почему в Google Таблицах синтаксис может отличаться. А ещё — уникальный приём с функцией MMULT для обработки «или» в массивах без циклов.
1. Базовый синтаксис: функция OR()
Самый очевидный способ записать логическое «или» — использовать встроенную функцию OR. Она проверяет несколько условий и возвращает ИСТИНА, если хотя бы одно из них истинно. Синтаксис:
=OR(логическое_значение1; [логическое_значение2]; ...)
Пример: проверим, находится ли значение в ячейке A1 в диапазоне от 10 до 20 ИЛИ равно 30:
=OR(A1>=10; A1<=20; A1=30)
- ✅ Плюсы: Чёткий синтаксис, работает во всех версиях Excel (включая Excel 2007).
- ⚠️ Минусы: Не поддерживает массивы напрямую (нужны обходные пути).
- 🔄 Альтернатива: В Google Таблицах разделитель аргументов — запятая, а не точка с запятой.
⚠️ Внимание: Если вORпередать пустую ячейку, она будет интерпретирована как0(ложь). Чтобы избежать ошибок, используйтеOR(A1=""; A1=0; A1="текст")для явной проверки.
2. Символ «|» (вертикальная черта) — когда его можно использовать
В Excel есть сокращённый способ записать «или» — с помощью символа | (на клавиатуре обычно Shift + \). Этот оператор работает в формулах массива и некоторых специальных функциях, например, в FILTER (в Excel 365). Пример:
=IF((A1>10)|(A1<5); "Вне диапазона"; "В диапазоне")
Ключевые нюансы:
- 🔹 Работает только внутри других функций (нельзя использовать отдельно, как
OR). - 🔹 В старых версиях Excel (до 2019) может требовать подтверждения формулы массива
Ctrl+Shift+Enter. - 🔹 В Google Таблицах не поддерживается — только функция
OR.
| Способ | Пример | Поддержка в Excel 2010 | Поддержка в Google Таблицах |
|---|---|---|---|
OR() |
=OR(A1>10; A1<5) |
✅ Да | ✅ Да |
| |
=IF((A1>10)|(A1<5);...) |
⚠️ Только в формулах массива | ❌ Нет |
+ (сумма) |
=IF((A1>10)+(A1<5)>0;...) |
✅ Да | ✅ Да |
3. Комбинация с IF: как записать «если... или...»
Чаще всего «или» используется внутри функции IF для ветвления логики. Например, нужно выдать бонус, если сотрудник отработал больше 10 лет ИЛИ его оклад ниже среднего. Формула:
=IF(OR(B2>10; C2
Ошибки, которые здесь часто допускают:
- 🚫 Забывают закрыть скобки
ORперед точкой с запятой вIF. - 🚫 Используют
ANDвместоOR, путая «и» с «или». - 🚫 Пытаются передать в
ORдиапазон (например,OR(A1:A10>10)), что приводит к ошибке.
⚠️ Внимание: Если в условииIFиспользуетсяORс диапазоном (например,OR(A1:A10="Да")), Excel вернёт ошибку. Для проверки массива используйтеSUMPRODUCTилиMMULT(см. раздел 5).
1. Все открытые скобки закрыты
2. Разделитель аргументов — точка с запятой (;)
3. Нет пробелов перед/после операторов (> < =)
4. Диапазоны в OR заменены на отдельные ячейки или SUMPRODUCT-->
4. Альтернативные функции: XOR и NOT
Иногда стандартное «или» не подходит. Например, если нужно, чтобы сработало только одно условие из двух (но не оба одновременно), используйте XOR («исключающее или»):
=XOR(A1="Да"; B1="Нет")
Другие полезные комбинации:
- 🔄 Инверсия «или»:
=NOT(OR(A1=0; A1=""))— проверяет, что значение НЕ пустое и НЕ ноль. - 🔄 «Или» с отрицанием:
=IF(OR(NOT(A1); B1); ...)— «если НЕ A1 ИЛИ B1».
Чем XOR отличается от OR?
OR возвращает ИСТИНА, если хотя бы одно условие истинно (включая случай, когда истинны оба).
XOR возвращает ИСТИНА только если истинно ровно одно условие (если оба истинны — вернёт ЛОЖЬ).
5. Продвинутые техники: «или» в массивах и без OR
Если нужно проверить условие «или» для целого столбца, стандартный OR не сработает. Вот 3 способа обойти ограничение:
- SUMPRODUCT:
=IF(SUMPRODUCT(--(A1:A10="Да"))>0; "Есть совпадения"; "Нет")Здесь
--преобразуетИСТИНА/ЛОЖЬв1/0, аSUMPRODUCTсуммирует единицы. - MMULT (для больших массивов):
Этот метод в 10 раз быстрее=IF(MMULT(--(A1:A10={"Да";"Нет"}); {1;1})>0; "Есть"; "Нет")SUMPRODUCTдля диапазонов свыше 10 000 строк. - Формулы массива (Excel 365):
=IF(OR(A1:A10="Да"); "Есть"; "Нет")В новых версиях Excel
ORавтоматически обрабатывает массивы.
⚠️ Внимание:MMULTтребует, чтобы количество строк в первом массиве совпадало с количеством столбцов во втором. Для динамических диапазонов используйтеCHOOSEROWS(в Excel 365).
6. Ошибки и решения: почему «или» не работает
Даже опытные пользователи сталкиваются с проблемами при использовании «или». Вот топ-5 ошибок и как их исправить:
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! в OR |
Передан диапазон вместо отдельных условий | Замените OR(A1:A10>10) на SUMPRODUCT(--(A1:A10>10))>0 |
OR всегда возвращает ЛОЖЬ |
Условия записаны как текст (например, OR(A1=">10")) |
Уберите кавычки: OR(A1>10) |
Символ | не работает |
Используется в старом Excel без формул массива | Замените на OR или подтвердите формулу Ctrl+Shift+Enter |
#ИМЯ? в XOR |
Функция отсутствует в Excel 2010 | Замените на =OR(AND(A1; NOT(B1)); AND(B1; NOT(A1))) |
Если ни один из методов не сработал, проверьте:
- 🔍 Формат ячеек: Даты и текстовые числа (например,
"10"вместо10) могут ломать логику. - 🔍 Языковые настройки: В немецкой версии Excel
ORназываетсяODER.
FAQ: Ответы на частые вопросы
Можно ли использовать «или» в условном форматировании?
Да, но синтаксис отличается. В правилах условного форматирования OR записывается без знака равенства:
=OR(A1>10; A1<5)
Для диапазонов используйте формулу на основе первой ячейки (например, $A1).
Как записать «или» в Power Query?
В Power Query (вкладка Данные → Получение данных) логическое «или» записывается как:
if [Столбец1] > 10 or [Столбец1] < 5 then "Да" else "Нет"
Обратите внимание: здесь используется текстовый оператор or (с маленькой буквы), а не функция OR.
Почему в Google Таблицах моя формула с «|» не работает?
Google Таблицы не поддерживают символ | как оператор «или». Используйте только функцию OR:
=IF(OR(A1>10; A1<5); "Да"; "Нет")
Также проверьте, что разделитель аргументов — запятая (,), а не точка с запятой (;).
Как записать «или» для 100+ условий без ошибок?
Для большого количества условий:
- Создайте отдельный столбец с проверками (например,
=A1="Да",=A1="Нет"и т.д.). - Используйте
SUMPRODUCTдля суммированияИСТИНА:
=IF(SUMPRODUCT(--(A1=D1:D100))>0; "Есть совпадение"; "Нет")
Где D1:D100 — список значений для проверки.