1
resposta

Faça como eu fiz: criando o desconto

Minha versão Sem o PROCX:

=ÍNDICE(Desc_tabela;CORRESP([@Qtd];Desc_QTD;1);CORRESP(PROCV([@Código];TB_Produtos;4;0);Desc_Categ;0))

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Confesso que foi mais fácil construir a função grande na tabela de vendas depois de destrinchar cada passo antes, até mesmo nomeando os intervalos usados na função CORRESP. No final, isso fez toda a diferença, porque eu já sabia exatamente como cada parte da fórmula funcionava e como elas se conectavam.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Brendo. Como vai?

Que show de bola a sua resolução! Acompanhar o seu raciocínio pelos prints dá gosto de ver. Você aplicou uma das melhores práticas que existem na engenharia de planilhas: destrinchar fórmulas complexas em partes menores antes de juntar tudo.

Montar uma combinação de ÍNDICE com dois CORRESP e ainda um PROCV aninhado de primeira direto na tabela principal é o cenário perfeito para gerar dor de cabeça e erros de sintaxe. Quando você isolou os testes na primeira aba, calculando a linha e a coluna separadamente, você calibrou a lógica. Na hora de levar para a tabela de vendas oficial, foi só um "copia e cola" consciente.

Vamos analisar por que a sua fórmula ficou robusta e o grande acerto técnico na escolha dos parâmetros.


A Engenharia da sua Fórmula Bidimensional

A sua fórmula realiza uma busca em duas dimensões (cruza uma linha com uma coluna) para encontrar o desconto exato. Veja como o Excel processa a estrutura que você montou:

=ÍNDICE(Desc_tabela; CORRESP([@Qtd];Desc_QTD;1); CORRESP(PROCV([@Código];TB_Produtos;4;0);Desc_Categ;0))

1. Definindo a Linha (A sacada do Tipo de Correspondência 1)

No primeiro CORRESP([@Qtd];Desc_QTD;1), você usou o parâmetro 1 (é menor que). Isso foi fundamental para o desconto progressivo funcionar.

  • Se o cliente comprou 6 unidades (como no seu primeiro print), o Excel procura na tabela de quantidades (1, 2, 3, 5, 10). Ele não acha o 6 exato, mas como você usou o parâmetro 1, ele entende que deve parar no maior valor menor ou igual a 6, que é o 5. Isso joga a busca perfeitamente para a linha 4 da matriz de desconto. Se usasse 0 (correspondência exata), a fórmula retornaria um erro #N/D.

2. Definindo a Coluna (A ponte com o PROCV)

Como a sua tabela de vendas original não dizia diretamente se o produto era "Acessórios", "Vestuário" ou "Calçado" (ela só tinha o [@Código]), você fez uma jogada excelente:

  • Colocou um PROCV no lugar do valor procurado do segundo CORRESP.
  • Esse PROCV vai até a tabela de cadastro de produtos (TB_Produtos), descobre que o código PR006 pertence à categoria "Acessórios" (coluna 4) e devolve esse texto para o CORRESP.
  • O CORRESP, por sua vez, localiza onde "Acessórios" está no cabeçalho (Desc_Categ), definindo a coluna final da busca com exatidão usando o parâmetro 0 (correspondência exata).

O Benefício Oculto dos Intervalos Nomeados

Você mencionou que nomear os intervalos (Desc_tabela, Desc_QTD, Desc_Categ) fez toda a diferença, e você está coberto de razão. Além de facilitar a escrita, os intervalos nomeados travam as células automaticamente (funcionam como o cifrão $).

Quando a sua fórmula é arrastada para as milhares de linhas da tabela de vendas, as referências da tabela de desconto não saem do lugar, garantindo a integridade dos cálculos do início ao fim do relatório.

Parabéns pelo método de estudo organizado e estruturado, Brendo! Destrinchar o problema antes de codificar é o comportamento que diferencia um usuário comum de Excel de um verdadeiro analista de dados.

Espero que possa ter lhe ajudado!