В основном вы хотите знать, имеет ли какая-либо из ячеек G2:R2 на одном листе то же значение, что и ячейка I2 на другом листе.
Есть несколько способов сделать это. Самый простой способ, который приходит на ум - это то, что проверяемые значения находятся в непрерывном диапазоне:
Способ 1: HLOOKUP/VLOOKUP
=IF(ISERROR(HLOOKUP(Sheet1!I2,Sheet!G2:R2,1,FALSE)),"","Y")
При этом используется поиск значения в ячейке I2 на одном листе и проверка его на другом листе в диапазоне G2:R2 . Если HLOOKUP находит хотя бы одно значение в диапазоне G2:R2 которое соответствует ячейке I2 на другом листе, он возвращает Y или иначе не возвращает значение.
Я использовал HLOOKUP поскольку предоставленный диапазон был горизонтальным. Если диапазон вертикальный, вы можете использовать вместо него VLOOKUP .
Если значения не находятся в непрерывном диапазоне по какой-либо причине, вы можете использовать другие 2 метода ниже.
Вот еще один способ:
Способ 2: КОНКАТЕНАТ
=IF(ISERROR(FIND(Sheet1!I2,CONCATENATE(Sheet!G2,Sheet!H2,Sheet!I2,Sheet!J2,Sheet!K2,Sheet!L2,Sheet!M2,Sheet!N2,Sheet!O2,Sheet!P2,Sheet!Q2,Sheet!R2))),"","Y")
В основном это создает большую строку из всех значений в ячейках G2:R2 и проверяет, находится ли значение в ячейке I2 другого листа. Если это так, он возвращает Y противном случае он не возвращает значение.
Обратите внимание, что, поскольку этот метод создает большую строку из всех данных в диапазоне ячеек, которые необходимо найти, в зависимости от типа данных в этих ячейках, он может вернуть Y неправильно. Например: если Sheet1!I2 имеет значение 123 и Sheet!G2 имеет значение 12 и Sheet!H2 имеет значение 34 , этот метод будет по-прежнему отображать Y поскольку "большая строка" будет содержать «1234 ...», а значение 123 будет в этой строке.
Еще один способ сделать это:
Способ 3: логический оператор - ИЛИ
[@ fixer1234 упомянул это первым]
=IF(OR((Sheet!G2=Sheet1!I2), (Sheet!H2=Sheet1!I2),(Sheet!I2=Sheet1!I2), (Sheet!J2=Sheet1!I2), (Sheet!K2=Sheet1!I2), (Sheet!L2=Sheet1!I2), (Sheet!M2=Sheet1!I2), (Sheet!N2=Sheet1!I2), (Sheet!O2=Sheet1!I2), (Sheet!P2=Sheet1!I2), (Sheet!Q2=Sheet!I2), (Sheet!R2=Sheet1!I2) ),"Y","")
При этом используется логический оператор OR чтобы проверить, находятся ли какие-либо значения в диапазоне G2:R2 в ячейке I2 на другом листе. Если логический оператор находит хотя бы одно значение, соответствующее ячейке I2 на другом листе, он возвращает Y или иначе не возвращает значение.
Способ 4: разложить формулу
- Если вы хотите использовать только условия
IF (по некоторым причинам, которые я не могу себе представить), вы можете распределить условия IF по нескольким ячейкам, а затем использовать результаты этих ячеек для определения окончательного результата. Например: у вас может быть несколько условий IF в одной ячейке, и вы можете использовать результат этого в другой ячейке вместе с несколькими другими условиями IF и так далее.
В ячейке A1 листа может быть следующее:
=IF(Sheet!$G$2=Sheet1!I2,"Y",IF(Sheet!$H2=Sheet1!I2,"Y", IF(Sheet!$I2=Sheet1!I2,"Y",IF(Sheet!$J2=Sheet1!I2,"Y", IF(Sheet!$K2=Sheet1!I2,"Y","")))))
И тогда, вы можете иметь следующее в ячейке A2 листа:
=IF(A1="Y", "Y", IF(Sheet!$L2=Sheet1!I2,"Y", IF(Sheet!$M2=Sheet1!I2,"Y",IF(Sheet!$N2=Sheet1!I2,"Y", ""))))
Наконец, в ячейке A3 листа может быть следующее:
=IF(A2="Y","Y",IF(Sheet!$O2=Sheet1!I2,"Y",IF(Sheet!$P2=Sheet1!I2,"Y", IF(Sheet!$Q2=Sheet1!I2,"Y",IF(Sheet!$R2=Sheet1!I2,"Y","")))))
Метод 5: VBA
Используйте VBA, если вам удобно, чтобы создать пользовательскую функцию, определяемую пользователем, в которой вы можете иметь как можно больше вложенных операторов If .
Примечание. Вывод обеих этих формул аналогичен предоставленной вами формуле.