quinta-feira, 23 de agosto de 2012

Dr. Planilha: PROCV retorna #N/D na Pesquisa com Horas

Este post tem como objetivo solucionar um misterioso problema do Excel. Nosso amigo Marcelo H. Duarte enviou um caso no mínimo curioso, o qual transcrevo abaixo:

"Estou usando a função PROCV no seu sentido clássico (procurar dados pela coluna à esquerda) utilizando esta função: PROCV(D1;$B$1:$C$960;2;0). A coluna “D” é uma coluna com períodos de 05 minutos (00:05, 00:10… até 23:55)e a B também, porém com alguns números entre eles de forma diferente. Porém, ele funciona muito bem até um determinado ponto (linha 30 as 07:00) e a partir daí ele só retorna #ND. Mas, as 07:00 eu tenho um evento nesse horário na coluna B e mesmo assim ele da erro. Já verifique com a função “SE Verdadeiro” se estes numeros são iguais e o excel diz que são. Está hachurado em vermelho o horário que começou a apresentar o erro. Se vc estender até o final da planilha, vai perceber que várias horas que contém na coluna B também apresentam #ND."

Em resumo o que acontece na planilha do Marcelo é o seguinte, ele tem uma coluna D que contém o horário 07:00:00 e usa este valor para procurar na coluna B que, em determinada linha, tem um valor idêntico, ou seja, 07:00:00. Mesmo assim, e com a fórmula do PROCV bonitinha, a função retorna sempre #N/D, mesmo os valores sendo iguais.

Assim como o Marcelo, eu também tentei tirar a teima, inserindo em uma célula qualquer um teste que compara as duas células:

=D31=B281

O resultado? VERDADEIRO. Fiz outro teste, convertendo o conteúdo das duas células do tipo "Hora" para o tipo "Número" e o resultado é o mesmo, o conteúdo é aparentemente igual. E mais um detalhe, isso não está acontecendo exclusivamente com esta célula, o mesmo se repete com várias outras, na verdade, fica mais frequente a partir das 07:00:00.
Bom, se aparentemente são iguais, então porque o PROCV continua retornando #N/D?

A resposta, por enquanto, é: NÃO FAÇO A MENOR IDEIA.

De toda forma, pensei em uma maneira de resolver o problema do Marcelo, alguns chamariam de "gambiarra", eu de "artifício técnico" (risos).

Veja o que mudou na fórmula:

Original
=PROCV(D31;$B$1:$C$960;2;0)

Modificada
=PROCV(TEMPO(HORA(D31);MINUTO(D31);SEGUNDO(D31));$B$1:$C$960;2;0)

Observe que, em especial, o que mudou foi a adição da função "TEMPO". Ela funciona assim, você informa um número para a hora, para o minuto e o segundo e a função lhe retorna um valor do tipo "TEMPO". Para decompor o conteúdo da célula D31 em hora, minuto e segundo usei as funções "HORA", "MINUTO" e "SEGUNDO", respectivamente.

Eu não sei explicar porque isso funciona e o valor original não, pelo menos ainda não sei. Até procurei nos sites gringos para ver se encontrava alguma coisa, em vão. O fato é que pelo menos assim o Marcelo, e quem mais vier a passar por essa situação, pode usar o PROCV sem medo com valores do tipo "HORA".

Segue o link para baixar a planilha com a solução descrita acima:
Solução PROCV com HORAS.xls

O texto foi escrito correndo, se tiver algum erro de português, por favor avisem-me que corrijo assim que possível.

Um grande abraço do Dr. Planilha!

Related Posts Plugin for WordPress, Blogger...