Проверьте, существует ли значение ячейки в столбце, а затем получите значение СЛЕДУЮЩЕЙ ячейки

89

После проверки, существует ли значение ячейки в столбце, мне нужно получить значение ячейки рядом с соответствующей ячейкой . Например, я могу проверить , если значение cell A1существует в column B, и предполагая , что он совпадает B5, то я хочу значение в cell C5.

Чтобы решить первую половину проблемы, я сделал вот что ...

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", "Match")

... и это сработало. Затем, благодаря более раннему ответу на SO , я также смог получить номер строки соответствующей ячейки:

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", "Match on Row " & MATCH(A1,B:B, 0))

Поэтому, естественно, чтобы получить значение следующей ячейки, я попытался ...

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", C&MATCH(A1,B:B, 0))

... и это не работает.

Что мне не хватает? Как мне добавить номер столбца к номеру возвращаемой строки для достижения желаемого результата?

SNag
источник

Ответы:

99

Используйте другую функцию, например ВПР:

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", VLOOKUP(A1,B:C,2,FALSE))
CustomX
источник
1
Благодарность! Это тоже работает! И я думаю, что лучше использовать VLOOKUP(A1, B:C, 2, FALSE)вместо фиксированного диапазона (чтобы учесть растущий поисковый массив)?
SNag
1
Да, просто использовал этот фиксированный диапазон в качестве теста. Отредактировал в своем ответе.
CustomX
Тебе IFERRORздесь не нужно . Он отлично работает и без него, потому что ВПР выполняется только при совпадении.
SNag
Ой! Кажется, я тестировал не в том столбце: P Действительно, без ЕСЛИОШИБКИ он тоже отлично работает: P
CustomX
3
Это старше, чем старое, но я просто хотел сказать, что использую это в течение многих лет, и меня действительно беспокоит, что вам никогда не давали лучший ответ. Мне нравится, что это делает таблицу масштабируемой для сравнения нескольких столбцов.
DuffDuff
37

После ответа Тилеманса я работал над этим.

=VLOOKUP(A1, B:C, 2, FALSE) 

работает нормально и делает то, что я хотел, за исключением того, что возвращается #N/Aпри несовпадении; поэтому он подходит для случая, когда известно, что значение определенно существует в столбце поиска.

Изменить (на основе комментария Тилеманса):

Чтобы избежать #N/Aнесоответствий, выполните:

=IFERROR(VLOOKUP(A1, B:C, 2, FALSE), "No Match")
SNag
источник
3
Используйте это вместо этого IFERROR(VLOOKUP(A1, B:C, 2, FALSE),0). Я также добавил это к своему ответу. 0 - любое значение, которое вы хотите :) (используйте это в коде, это приведет к тому, что совпадение не будет найдено;)
CustomX
7

Как насчет этого?

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", INDIRECT(ADDRESS(MATCH(A1,B:B, 0), 3)))

«3» в конце означает столбец C.

Винсент Тан
источник
2
Фантастика! Я просто попробовал именно это (на основе Excel: получить содержимое ячейки с учетом номеров строк и столбцов ) и собирался ответить на свой вопрос, но вы меня опередили! Спасибо, отлично работает!
SNag