В основном вы хотите знать, имеет ли какая-либо из ячеек 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
.
Примечание. Вывод обеих этих формул аналогичен предоставленной вами формуле.