
Tenho uma coluna de dados no Excel com números [0..100]. Preciso de uma nova coluna, que os mapeie para um novo conjunto de valores tal que:
- > 90: 4
- 80-90:3
- 70-79:2
- 60-69:1
- <60:0
Eu tentei fazer isso comPROCV, especificamente com uma entrada de teste 77
e a chamada de função VLOOKUP(77, A10:B19, 2, TRUE)
, onde A10 é o elemento superior esquerdo neste intervalo:
99 4 90 4 89 3 80 3 79 2 70 2 69 2 60 1 59 0 0 0
No entanto, estou obtendo um resultado de #N/A
. De acordo com a documentação, isso ocorre porque
...o valor em lookup_value é menor que o menor valor na primeira coluna de table_array...
No entanto, esse claramente não é o caso, pois estou passando de 77. No entanto, se eu usar uma entrada de teste de 79
, um valor que está explicitamente na tabela de pesquisa, obtenho um resultado correto.
VLOOKUP é a abordagem errada aqui? Qual é a melhor maneira de fazer esse tipo de mapeamento?
Devo mencionar que tanto meu valor de entrada quanto minha tabela de pesquisa são digitados como Número.
Responder1
Se você usar Index/Match em vez de Vlookup, poderá manter a tabela de pesquisa classificada em ordem decrescente, conforme postado em sua pergunta. A fórmula é
=INDEX(B1:B10,MATCH(77,A1:A10,-1))
Combine com -1 como terceiro parâmetro retornará um valor maior ou igual ao valor de pesquisa quando a tabela for classificada em ordem decrescente.
Responder2
Depois de me aprofundar nisso por muito tempo, aprendi que a tabela de pesquisa deve ser classificada em ordem crescente. A documentação observa que deve ser classificado, mas não especificou a ordem de classificação. Qualquer coisa além da ordem crescente resulta em #N/A
erro.