Вопрос или проблема
Возьмите эту таблицу:
Мне нужно найти в столбце “Имя” Петра, Анну или обоих, и если они найдены, вернуть значение из ячейки Бонус.
Я попробовал несколько предложений от Copilot – например (переведено с датского Excel):
=FILTER([Бонус]; (OR([Имя]="Анна"; [Имя]="Петр")))
=IF(OR([Имя]="Анна"; [Имя]="Петр"); [Бонус]; "")
=SUMIFS([Бонус], [Имя], "Анна") + SUMIFS([Бонус], [Имя], "Петр")
И ни один из них не работает.
Есть предложения?
Попробуйте использовать следующую формулу:
• Формула, использованная в ячейке D3
=IF(OR(1-ISERR(FIND({"Анна","Петр"},[@Имя]))),[@Бонус],"")
Или,
=IF(OR(ISNUMBER(FIND({"Анна","Петр"},[@Имя]))),[@Бонус],"")
Если имена не различают регистр, можно использовать SEARCH()
вместо функции FIND()
!
Ответ или решение
Как вернуть значение из ячейки, если другая ячейка содержит данные
В рамках работы с таблицами в Excel возникает необходимость извлечения данных на основе определённых условий. В данной статье рассмотрим, как можно вернуть значение из столбца «Бонус», если в столбце «Имя» содержатся определённые значения, такие как «Петр», «Анна» или оба этих имени.
Исходные данные
Рассмотрим таблицу, которая содержит два столбца: «Имя» и «Бонус». Ваша задача состоит в том, чтобы проверить, есть ли в столбце «Имя» искомые значения, и в случае их нахождения вернуть соответствующие значения из столбца «Бонус».
Применимые формулы
Существует несколько формул, которые могут помочь в данной задаче:
-
Использование
FIND()
илиSEARCH()
:
Эти функции помогут нам определить, содержится ли одно из искомых значений в ячейке. Разница между ними заключается в том, чтоFIND()
чувствителен к регистру, аSEARCH()
— нет.Пример формулы:
=IF(OR(ISNUMBER(FIND({"Анна", "Петр"},[@Имя]))),[@Бонус],"")
В данном случае функция
ISNUMBER()
проверяет, возвращает лиFIND()
числовое значение (показатель наличия имени в ячейке). Если хотя бы одно из условий истинно, то функцияIF
вернет значение из ячейки «Бонус», иначе — пустую строку. -
Использование
SUMIFS()
для суммирования:
Если необходимо сложить все бонусы для найденных имен, можно использоватьSUMIFS()
. Например:=SUMIFS([Бонус], [Имя], "Анна") + SUMIFS([Бонус], [Имя], "Петр")
Этот вариант подходит для суммирования всех бонусов для указанных имен.
-
Использование
FILTER()
для фильтрации данных:
Если ваша версия Excel поддерживает функциюFILTER()
, можно использовать:=FILTER([Бонус], (OR([Имя]="Анна", [Имя]="Петр")))
Данная формула возвращает массив всех бонусов, соответствующих условиям.
Рекомендации по выбору формулы
- Оптимизация производительности: Если в вашем наборе данных много строк, и вам нужно оптимизировать производительность, обратите внимание на способ использования формул.
SUMIFS()
скорее всего будет быстрее, чем сложныеIF()
конструкции. - Поддержка разных языков интерфейса: При использовании формул учитывайте, что названия функций могут различаться в зависимости от языка интерфейса. Например, в английской версии Excel это будут
FIND
,IF
,OR
и т.д.
Заключение
Выбор правильной формулы для извлечения данных из ячейки зависит от конкретной задачи: необходимо ли вернуть только одно значение, отфильтровать данные или суммировать значения. Учитывайте размер вашего набора данных и версии Excel. Следуя указанным рекомендациям, вы сможете эффективно решать задачи по работе с таблицами и извлечению информации на основе заданных условий.