Tenho uma tabela do Excel (Tabela de Vendas) que usa uma função INDEX MATCH em algumas colunas. Há 2 colunas específicas (Produto e Número da Peça) que estão usando uma coluna de número de material para extrair outros valores de outras tabelas. A coluna de número de material é preenchida com números que são armazenados como "Geral" e cada célula tem um erro que diz "Número Armazenado como Texto". O "Número armazenado como texto" não é um problema para a coluna do produto, mas É um problema para a coluna do número da peça. Quando altero a coluna para "Número", a coluna do número da peça se corrige (então sei que não é um problema com a função).
Além disso, a tabela de referência de número de peça tem os números de material e NÃO mostra um erro nos valores de número de material. No entanto, na tabela de produtos, o número de material MOSTRA um erro.
Alguém pode explicar por que os números armazenados como texto afetariam uma coluna e não a outra? Para sua informação: a fonte de dados é importada para a tabela principal por meio do VBA e não consigo alterar o conteúdo do arquivo de entrada. Talvez eu precise alterar o texto da coluna por meio do VBA na importação, mas realmente quero entender por que é um problema em um ponto, mas não no outro.
Fórmula para o produto:
=IF([@Location]="Non-AT","Non AT",INDEX(Table_Material,MATCH([@[Material Number]],Table_Material[Material Number],0),MATCH($T$2,'Material No. to Product'!Print_Titles,0)))
Fórmula para número de peça:
=INDEX(Table_ATNo,MATCH([@[Material Number]],Table_ATNo[SAP Material Number],0),2)
Parece que o problema está relacionado a como diferentes funções no Excel lidam com conversões de número para texto. Algumas funções realizam conversões implícitas, enquanto outras não. Por exemplo, na imagem abaixo, "texto"
1
(a célula A1 contém'1
) menos "numérico"1
é igual a zero, mas comparar os mesmos valores retornaFALSE
.Você está essencialmente criando seu próprio problema ao comparar dois tipos de dados diferentes. Para resolver isso, você deve encapsular os valores "gerais" em uma função que retorna seus valores numéricos. Isso deve resolver seu problema. Por exemplo:
Editar: Parece que
INDEX
executa a conversão implícita, masMATCH does
não. Isso realmente faz sentido, poisINDEX
espera entradas numéricas para os números de coluna e linha, mas o primeiro parâmetro deMATCH
não precisa ser numérico.Isso destaca a importância de usar tipos de dados consistentes em suas fórmulas.