Eu tenho uma planilha usando dados brutos que o Excel não identifica como tabelas (ou seja, colocando claramente valores em células adjacentes) e em outra parte da minha planilha, fórmulas pesquisando esses dados, como
VLOOKUP(D$1, Config!$C$4:$E$8,2,FALSE)
As coisas estão indo perfeitamente bem, até que decido declarar meus dados brutos como uma tabela (Ctrl-T) para obter algumas funcionalidades extras, como formatação automática e expansão automática de tabela.
Depois que a tabela é declarada, todas as minhas fórmulas encontram #N/A nessa tabela, quer eu faça referência à zona de pesquisa como referência de célula ( Config!$C$4:$E$8
) ou pelo novo nome da tabela (modificado por meio do gerenciador de nomes).
Uma pista(Não sei quanto vale) é que a chave de pesquisa ( D$1
na minha fórmula) e as chaves de dados (coluna mais à esquerda Config!$C$4:$E$8
) são numéricas (valores como 2015
). O Excel parece usar a pesquisa de texto quando está dentro de uma tabela e não consegue corresponder 2015
(na tabela) com "2015"
(de D$1
). Isso é apenas uma pista, posso estar errado nisso.
O que posso fazer para começar a usar tabelas (a expansão automática é realmente útil) sem quebrar minhas fórmulas?
EDITAR:As coisas quebram quando a chave de pesquisa ( D$1
) passa a fazer parte de uma tabela: 2015 agora é visto pelas fórmulas como “2015”
Responder1
Como sicarius92 aponta em seu comentário, lidar com o tipo de dados alterado por meio de 'transmissão' D$1 + 0
funciona para mim.
Ainda assim, é apenas uma solução alternativa e não explica por que colocar dados em tabelas altera magicamente o tipo de dados.
Responder2
No Excel 2010 (não sei ao certo como funcionava em 2007), transformar um intervalo em tabela transforma o conteúdo dos cabeçalhos em texto, independentemente do conteúdo. Se você realmente deseja ter números nos cabeçalhos, você deve marcar a formatação das células como "Número" ou "Geral" (ou o que você precisar) e reinserir os dados anteriores, pois aparentemente o Excel também desativa a verificação de tipos de dados incompatíveis ( e a solução automática, a pequena seta verde e seu menu).
Responder3
Caras da lei e da misericórdia...
Um simples IFERROR()
resolve esse problema. Dado que você sabe que um valor de pesquisa PODE ser numérico na tabela de pesquisa, mas NÃO numérico na célula do valor de pesquisa, basta fazer:
=IFERROR(VLOOKUP(D$1,Config!$C$4:$E$8,2,FALSE), VLOOKUP(VALUE(D$1),Config!$C$4:$E$8,2,FALSE))
O acima é apenas para generalizar a fórmula. Se você não se importa em copiá-lo para outro lugar, SABE que o valor de pesquisa é um número tratado como texto e você só precisa da metade "falha" da fórmula. Se você não tem certeza, ou não sabe NADA, mas quer comprovar esse tipo de problema, use tudo.
Também funciona ao contrário. Digamos que você tenha um valor de pesquisa numérico (como em, o Excel pensa que é numérico {onde aqui, o Excel pensa que o valor de pesquisa é texto}). Basta usar TEXT()
em vez de VALUE()
para resolver:
=IFERROR(VLOOKUP(D$1,Config!$C$4:$E$8,2,FALSE), VLOOKUP(TEXT(D$1,"@"),Config!$C$4:$E$8,2,FALSE))
(E se nenhum dos dois resolver o problema, você terá o pesadelo de procurar caracteres inúteis em um lugar ou outro... Como os cabeçalhos geralmente não são dados provenientes de fora do mundo seguro e controlado de alguém, tente primeiro o material do intervalo de pesquisa. A menos que seja importado cabeçalhos para onde quer que os cabeçalhos estejam (você sabe, como importou todo o material de onde vem o valor da pesquisa ou se você importou os dois conjuntos de dados).