Проверьте, существуют ли данные, которые удовлетворяют нескольким критериям, на листе 1 и листе 2 - PullRequest
0 голосов
/ 22 февраля 2019

Моя таблица содержит 2 листа с разным количеством столбцов.Я хочу добавить столбец, который будет отображать true или false (или любые другие 2 противоположных значения) для каждой строки в зависимости от того, удовлетворяет ли эта строка 2 критериям: sheet1!col1=sheet2!col1 и sheet1!col2=sheet2!col2.

You 'найду иллюстрацию ниже.Я пытался использовать

ARRAYFORMULA(VLOOKUP(A1&B1, {Sheet1!A1:A4&Sheet1!B1:B4,Sheet1!C1}, 3))

, но я получаю сообщение об ошибке

vlookup оценивает выход за пределы диапазона

Итак, я хотелпопробуйте

QUERY({Sheet1!A1:B4,A1:B5}, "Select C where ")

, но я не мог понять, как написать условие where (sheet1)col1=(sheet2)col1 & (sheet1)col2=(sheet2)col2, и я также не знаю, смогу ли я работать с таблицами разных измерений.Я наконец попробовал

=MATCH(A1&B1,{Sheet1!A1:A&Sheet1!B1:B})

, но он всегда возвращает 1. Любая идея, пожалуйста?

Лист 1 sheet1

Лист 2 sheet2

1 Ответ

0 голосов
/ 22 февраля 2019

Ваша первая формула почти верна.Вы получаете сообщение об ошибке, потому что в фигурных скобках есть только один столбец, поэтому вам нужно изменить его на

=ArrayFormula(vlookup(A1&B1,{Sheet2!A:A&Sheet2!B:B},1,false))

и добавить «ложь», чтобы убедиться, что он только соответствует точным совпадениям.

Чтобы запрос работал, вам необходим правильный синтаксис для доступа к ячейкам на текущем листе:

=query(Sheet2!A:B," select A,B where A='"&A1&"' and B='"&B1&"'")

Чтобы сопоставление работало, вам нужно ввести его как формулу массива и добавить ноль куказать точное совпадение:

=ArrayFormula(MATCH(A1&B1,{Sheet2!A:A&Sheet2!B:B},0))

Однако я бы не согласился с коллегами, если бы не указал, что есть проблема с vlookup и соответствием, как показано выше - toto & moto будет соответствовать не только toto & moto,но также с tot & omoto и т. д. Чтобы обойти это, нужно добавить символ-разделитель, например

=ArrayFormula(vlookup(A1&"|"&B1,{Sheet2!A:A&"|"&Sheet2!B:B},1,false))

=ArrayFormula(MATCH(A1&"|"&B1,{Sheet2!A:A&"|"&Sheet2!B:B},0))

Они все еще нуждаются в некоторой обработке, если они сообщают о Да и Нет, а также не дают ложный положительный результат на пустом месте.строки - также vlookup и match могут быть записаны как формулы самораскрывающегося массива - но это короткий ответ на вопрос.

...