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':
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.
Tags microsoft-excel vlookup