Mapeamento de intervalo no Excel

2

Eu 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, como:

  • > 90: 4
  • 80-90: 3
  • 70-79: 2
  • 60-69: 1
  • < 60: 0

Eu tentei fazer isso com VLOOKUP , especificamente com uma entrada de teste de 77 e a chamada de função VLOOKUP(77, A10:B19, 2, TRUE) , em que A10 é o elemento superior esquerdo nesse 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

...the value in the lookup_value is smaller than the smallest value in the first column of the table_array...

No entanto, esse não é claramente o caso, pois estou passando de 77. No entanto, se eu usar uma entrada de teste de 79 , um valor explicitamente na tabela de consulta, obtenho um resultado correto.

O VLOOKUP é a abordagem errada aqui? Qual é a melhor maneira de fazer esse tipo de mapeamento?

Devo mencionar que tanto o meu valor de entrada quanto a tabela de pesquisa são digitados como Número.

    
por Justin R. 27.01.2016 / 00:43

2 respostas

1

Depois de investigar isso por um longo tempo, aprendi que a tabela de pesquisa deve ser classificada como crescente. A documentação observa que ele deve ser classificado, mas não especificou a ordem de classificação. Qualquer coisa além da ordem crescente resulta no erro #N/A .

    
por 27.01.2016 / 02:11
1

Se você usar Index / Match em vez de Vlookup, poderá manter a tabela de pesquisa classificada como descendente, como postada na sua pergunta. A fórmula é

=INDEX(B1:B10,MATCH(77,A1:A10,-1))

Corresponda com -1 como o terceiro parâmetro retornará um valor maior ou igual ao valor de pesquisa quando a tabela estiver classificada como decrescente.

    
por 27.01.2016 / 02:26