Conceito: cruzar informações sem duplicar dados
Em controles e relatórios, é comum ter uma tabela “mestre” (cadastro) com dados estáveis, como Produtos e Clientes, e outra tabela de Lançamentos (movimentações) com registros diários. Em vez de repetir descrição, categoria e preço em cada lançamento (o que gera inconsistência e retrabalho), você registra apenas uma chave de busca (por exemplo, CodProduto) e usa funções de busca e referência para “puxar” os demais campos do cadastro.
Chave de busca é um identificador que existe nas duas tabelas e aponta para o mesmo item. Exemplos: CodProduto, IDCliente, CPF, Email. Boas chaves são únicas, estáveis e sem variações de digitação.
Estrutura sugerida (duas abas)
Você pode organizar assim:
- Aba Produtos (cadastro):
CodProduto,Descricao,Categoria,Preco - Aba Lancamentos (movimentação):
Data,CodProduto,Qtd, e colunas calculadas paraDescricao,Categoria,Preco,Total
PROCV e PROCH: busca em tabela por coluna ou por linha
No Calc, PROCV procura um valor na primeira coluna de um intervalo e retorna dados de outra coluna na mesma linha. PROCH faz o equivalente por linha (procura na primeira linha e retorna de outra linha).
Quando usar PROCV
Use quando sua tabela de cadastro está “em pé” (códigos em uma coluna). É o caso mais comum.
- Ouça o áudio com a tela desligada
- Ganhe Certificado após a conclusão
- + de 5000 cursos para você explorar!
Baixar o aplicativo
Correspondência exata (muito importante)
Para cadastros (produtos/clientes), a busca deve ser exata. No PROCV, isso é controlado pelo último argumento: use 0 (ou FALSO) para correspondência exata. Se você usar correspondência aproximada por engano, pode retornar o item errado.
Passo a passo prático com PROCV (Produtos → Lançamentos)
1) Monte o cadastro na aba Produtos
| A | B | C | D |
|---|---|---|---|
| CodProduto | Descricao | Categoria | Preco |
| P001 | Café 500g | Mercearia | 18,90 |
| P002 | Açúcar 1kg | Mercearia | 5,49 |
| P003 | Detergente | Limpeza | 2,99 |
2) Na aba Lancamentos, registre apenas o código
| A | B | C | D | E | F |
|---|---|---|---|---|---|
| Data | CodProduto | Qtd | Descricao | Categoria | Preco |
| 10/01 | P002 | 3 |
3) Busque a Descrição (em Lancamentos.D2)
=PROCV(B2;Produtos.$A$2:$D$100;2;0)Explicação dos argumentos: B2 é o código digitado no lançamento; Produtos.$A$2:$D$100 é a tabela de cadastro; 2 indica que você quer a 2ª coluna do intervalo (Descrição); 0 exige correspondência exata.
4) Busque Categoria e Preço
Categoria (em E2):
=PROCV(B2;Produtos.$A$2:$D$100;3;0)Preço (em F2):
=PROCV(B2;Produtos.$A$2:$D$100;4;0)Colunas fixas: por que travar o intervalo
Ao copiar a fórmula para baixo, você quer que o intervalo do cadastro permaneça o mesmo. Por isso, use $ no intervalo (Produtos.$A$2:$D$100). Assim, o Calc não “desloca” a área de busca ao arrastar a fórmula.
Como lidar com “não encontrado” usando SEERRO
Se o código não existir no cadastro, o PROCV retorna erro (geralmente #N/D). Para evitar poluir a planilha, envolva a busca com SEERRO e retorne vazio ou uma mensagem.
Descrição com tratamento (em D2):
=SEERRO(PROCV(B2;Produtos.$A$2:$D$100;2;0);"")Preço com mensagem (em F2):
=SEERRO(PROCV(B2;Produtos.$A$2:$D$100;4;0);"Código não cadastrado")PROCH (quando a tabela está “deitada”)
Se o cadastro estiver com códigos na primeira linha e atributos nas linhas abaixo, use PROCH. Exemplo de fórmula (buscando o preço na 4ª linha do intervalo):
=PROCH(B2;Produtos.$A$1:$Z$4;4;0)Na prática, para cadastros, prefira tabelas “em pé” e PROCV (ou as alternativas abaixo), pois é mais fácil manter e expandir.
ÍNDICE + CORRESP: busca mais flexível e robusta
A combinação ÍNDICE + CORRESP é uma alternativa ao PROCV com vantagens importantes:
- Não depende de “número da coluna” fixo dentro do intervalo (você pode localizar a coluna pelo cabeçalho).
- Permite buscar valores mesmo que a coluna-chave não seja a primeira do intervalo.
- Fica mais resistente a inserções/remoções de colunas no cadastro.
Passo a passo: buscar Descrição com ÍNDICE + CORRESP
Na aba Lancamentos, em D2 (Descrição):
=ÍNDICE(Produtos.$B$2:$B$100;CORRESP(B2;Produtos.$A$2:$A$100;0))Leitura: CORRESP encontra a posição (linha) do CodProduto de B2 dentro da lista Produtos.$A$2:$A$100 com correspondência exata (0). Depois, ÍNDICE retorna o valor dessa mesma linha na coluna de Descrição (Produtos.$B$2:$B$100).
Com tratamento de erro:
=SEERRO(ÍNDICE(Produtos.$B$2:$B$100;CORRESP(B2;Produtos.$A$2:$A$100;0));"")Buscar Categoria e Preço com ÍNDICE + CORRESP
Categoria (em E2):
=SEERRO(ÍNDICE(Produtos.$C$2:$C$100;CORRESP(B2;Produtos.$A$2:$A$100;0));"")Preço (em F2):
=SEERRO(ÍNDICE(Produtos.$D$2:$D$100;CORRESP(B2;Produtos.$A$2:$A$100;0));"")Versão mais “à prova de mudanças”: localizar a coluna pelo cabeçalho
Se você teme que a ordem das colunas em Produtos mude, você pode usar CORRESP também para achar a coluna pelo nome do cabeçalho. Exemplo: buscar o campo cujo cabeçalho é Preco.
Supondo cabeçalhos em Produtos.A1:D1 e dados em Produtos.A2:D100:
=SEERRO(ÍNDICE(Produtos.$A$2:$D$100;CORRESP(B2;Produtos.$A$2:$A$100;0);CORRESP("Preco";Produtos.$A$1:$D$1;0));"")Aqui, o primeiro CORRESP encontra a linha do produto; o segundo encontra a coluna onde está “Preco”. Isso evita ajustar o número da coluna quando alguém reorganiza o cadastro.
Boas práticas para chaves e qualidade da busca
Garanta unicidade no cadastro
Se houver códigos duplicados em Produtos, PROCV e CORRESP retornarão a primeira ocorrência, o que pode gerar resultados incorretos. Mantenha o CodProduto único.
Padronize o tipo do código (texto vs número)
Um erro comum é ter CodProduto como texto em uma aba e como número em outra. Exemplo: 001 pode virar 1 se for tratado como número. Padronize o formato e, se necessário, defina a coluna como Texto no cadastro e nos lançamentos.
Evite espaços invisíveis
Espaços antes/depois do código fazem a busca falhar. Se você suspeitar disso, uma estratégia é criar uma coluna auxiliar no cadastro com o código “limpo” e buscar por ela. Exemplo de limpeza (em uma coluna auxiliar):
=ARRUMAR(A2)Depois, use essa coluna auxiliar como base da busca.
Exemplo completo: calcular Total no lançamento com preço buscado
Depois de trazer o Preco para a aba Lancamentos, você pode calcular o total por linha. Supondo Qtd em C2 e Preco em F2:
=SEERRO(C2*F2;"")Isso evita mostrar erro quando o preço ainda não foi encontrado (por código inválido ou célula vazia).
Checklist rápido de diagnóstico (quando a busca não funciona)
- Correspondência exata: confirme que o último argumento do PROCV/PROCH está em
0(ouFALSO). - Intervalo correto: a coluna-chave precisa ser a primeira do intervalo no PROCV; no ÍNDICE+CORRESP, confirme as faixas de linha.
- Intervalo travado: use
$para não deslocar a tabela ao copiar. - Tipo do código: texto e número não casam; padronize.
- Duplicidade: códigos repetidos no cadastro retornam a primeira ocorrência.
- Tratamento de erro: use
SEERRO(...;"")para manter a planilha limpa enquanto você corrige cadastros.