%2C%20))%20funciona%20com%20intervalos%2C%20mas%20n%C3%A3o%20com%20dados%20formatados%20como%20TABLE.png)
A configuração:
Tenho duas planilhas Excel com dados, ambas "Formatadas como tabela(s)". Um é um grande conjunto de dados, com muitas linhas e colunas (campos) e o outro é uma espécie de “dicionário”, com apenas 2 linhas e 2 colunas (campos).
Tabela 1 (conjunto de dados)
+----------------------------------------------------+
| month | week | productName | price | sold pcs. |
+---------------------------------------------------+|
| jan | 1 | heavy | (formula) | 25 |
| jan | 2 | heavy | (formula) | 51 |
| jan | 3 | heavy | (formula) | 06 |
| jan | 4 | heavy | (formula) | 00 |
| jan | 1 | light | (formula) | 39 |
| jan | 2 | light | (formula) | 11 |
| jan | 3 | light | (formula) | 98 |
Mesa 2 (ditado)
+---------------------+
| productName | price |
+---------------------+
| heavy | 125 |
| light | 65 |
O que eu preciso fazer:
O que preciso fazer é trazer os valores (preços dos produtos) do dicionário para o grande conjunto de dados, onde certos valores (nomes de produtos) corresponder.
O que eu tentei:
=INDEX(Table2[@price], MATCH(Table1[@productName], Table2[@productName], 0))
Ao trabalhar com faixas, essa combinação funciona perfeitamente. Porém, quando faço assim, com dados formatados como tabelas, ele só corresponde na primeira linha, da Tabela1.
Este é o resultado que obtenho:
+-------------------------------------------------+
| month | week | productName | price | sold pcs. |
+-------------------------------------------------+
| jan | 1 | heavy | 125 | 25 |
| jan | 2 | heavy | #N/A | 51 |
| jan | 3 | heavy | #VALUE | 06 |
| jan | 4 | heavy | #VALUE | 00 |
| jan | 1 | light | #VALUE | 39 |
| jan | 2 | light | #VALUE | 11 |
| jan | 3 | light | #VALUE | 98 |
A primeira linha é correspondida corretamente, a segunda linha (novamente igual à primeira) não é encontrada e a partir daí os valores de erro começam. O que devo fazer?
Obrigado
Responder1
Você está usando indevidamente os intervalos nomeados:
Table2[@productName]
aponta para um único elemento na tabelaTable2[productName]
aponta para toda a colunaTable2
aponta para todas as colunas e linhas da tabela, excluídos os cabeçalhos
Você pode fazer isso facilmente com um VLOOKUP:
=INDEX(Table2,MATCH([@productName],Table2[productName],0),MATCH("price",Table2[#Headers],0))
Soluções alternativas:
=VLOOKUP([@productName],Table2,2,0)
=VLOOKUP([@productName],Table2,MATCH("price",Table2[#Headers]),0)
Ou, desde que cada productName seja exclusivo, você pode usar SUMIF:
=SUMIF(Table2[productName],[@productName],Table2[price])
Responder2
Isso deve funcionar para você:
=INDEX(Table2[[#All],[Price]],MATCH([@productName],Table2[[#All],[ProductName]],0),1)
Observação. o uso de #ALL seleciona a coluna inteira, não apenas uma LINHA.