Qual é o verdadeiro algoritmo do VLOOKUP com range_lookup definido como TRUE?

1

Não consegui encontrar a referência da Microsoft que explica o comportamento real do VLOOKUP com a configuração range_lookup definida como 'TRUE' (o que significa encontrar uma "correspondência aproximada"). Sua referência apenas instrui você a classificar a tabela de consulta em ordem ascendente para obter "resultados corretos", mas não explica como o algoritmo funciona para que se possa prever seu comportamento em tabelas não classificadas.

Muitos artigos online tentam explicar por que uma tabela de pesquisa classificada é importante, propondo o seguinte comportamento quando range_lookup é definido como 'TRUE':

  1. O VLOOKUP desce a lista na coluna mais à esquerda até encontrar um valor de pesquisa maior do que aquele que está sendo pesquisado e depois para de procurar.
  2. O VLOOKUP retorna o valor de saída associado ao valor de pesquisa encontrado na linha ACIMA daquele que parou de olhar.

Isso certamente explica por que uma lista não classificada levaria a resultados problemáticos. Mas ainda assim, decidi testá-lo para ver se era realmente assim que funcionava. Considere o seguinte lookuptable com sua célula superior esquerda em A1:

1   a
99  b
3   c
4   d

Agora vamos fazer algumas pesquisas de valor:

Pesquisa por 1: Considere o VLOOKUP (1, A1: B4,2, TRUE) no contexto do algoritmo proposto. VLOOKUP desce a coluna da esquerda, vê um 1, continua indo, vê um 99. Isso é maior que 1. Ele retorna o valor na segunda coluna da linha acima dele. Bem. Algoritmo espera um retorno de 'a'. Excel retorna 'a'.

Procure por 2: Com VLOOKUP (2, A1, B4,2, TRUE), o VLOOKUP desce a coluna da esquerda, vê um 1, continua indo, vê um 99. Isso é maior que 2. Ele retorna o valor no segunda coluna da linha acima dela. Funciona de acordo com o algoritmo. Algoritmo espera um retorno de 'a'. Excel retorna 'a'.

Procure por 3: Com VLOOKUP (3, A1, B4,2, TRUE), o VLOOKUP desce a coluna da esquerda, vê um 1, continua indo, vê um 99. Isso é maior que 3. Ele retorna o valor no segunda coluna da linha acima dela. Funciona de acordo com o algoritmo. Algoritmo espera um retorno de 'a'. Excel retorna 'a'.

Procurar por 4: Com VLOOKUP (3, A1, B4,2, TRUE), VLOOKUP desce a coluna da esquerda, vê um 1, continua indo, vê um 99. Isso é maior que 4. Ele deve retornar o valor em a segunda coluna da linha acima dela. Mas isso não acontece. Algoritmo espera um retorno de 'a', mas o Excel retorna 'd'!

Alguém conhece o algoritmo atual?

Editar: Eu cometi um erro, mas minhas dúvidas ainda permanecem. Veja meu comentário abaixo.

    
por user2686410 09.06.2016 / 22:12

0 respostas