Verifique se o valor da célula existe na coluna e, em seguida, obtenha o valor da próxima célula

89

Depois de verificar se existe um valor de célula em uma coluna, preciso obter o valor da célula ao lado da célula correspondente . Por exemplo, verifico se o valor em cell A1existe em column Be, supondo que corresponda B5, desejo o valor em cell C5.

Para resolver a primeira metade do problema, eu fiz isso ...

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

... e funcionou. Então, graças a uma resposta anterior no SO , também fui capaz de obter o número da linha da célula correspondente:

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

Então, naturalmente, para obter o valor da próxima célula, tentei ...

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

... e não funciona.

o que estou perdendo? Como faço para anexar o número da coluna ao número da linha retornado para obter o resultado desejado?

SNag
fonte

Respostas:

99

Use uma função diferente, como VLOOKUP:

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", VLOOKUP(A1,B:C,2,FALSE))
CustomX
fonte
1
Obrigado! Isso também funciona! E eu acho que seria melhor usar em VLOOKUP(A1, B:C, 2, FALSE)vez de usar um intervalo fixo (de modo a acomodar uma matriz de pesquisa crescente)?
SNag
1
Sim, apenas usei esse intervalo fixo como um teste. Editou na minha resposta.
CustomX
Você não precisa IFERRORaqui. Funciona bem sem ele, porque VLOOKUP só é executado se houver correspondência.
SNag
Ops! Parece que tenho testado na coluna errada: P De fato, sem IFERROR, ele funciona perfeitamente também: P
CustomX
3
Isso é mais velho do que antigo, mas eu só queria dizer que tenho usado isso há anos e realmente me incomoda que você nunca tenha recebido a melhor resposta. Eu adoro o fato de tornar a tabela escalonável para comparar várias colunas.
DuffDuff
36

Após a resposta de t.thielemans , trabalhei que apenas

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

funciona bem e faz o que eu queria, exceto que retorna #N/Apara não correspondências; portanto, é adequado para o caso em que se sabe que o valor existe definitivamente na coluna de pesquisa.

Editar (com base no comentário de t.thielemans):

Para evitar #N/Anão correspondências, faça:

=IFERROR(VLOOKUP(A1, B:C, 2, FALSE), "No Match")
SNag
fonte
3
Use isso IFERROR(VLOOKUP(A1, B:C, 2, FALSE),0). Eu também adicionei isso à minha resposta. 0 sendo o valor que você quiser :) (usar isso no código levará a Nenhuma correspondência se nenhuma correspondência for encontrada;)
CustomX
7

Que tal agora?

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

O "3" no final significa para a coluna C.

Vincent Tan
fonte
2
Fantástico! Eu tentei exatamente isso (com base no Excel: obter o conteúdo de uma célula com os números da linha e da coluna ) e estava prestes a responder minha própria pergunta, mas você chegou antes de mim! Obrigado, funciona muito bem!
SNag