Capítulo 09: Busca e Referência I (A Função PROCV e Dicionários de Dados)

🎯 Objetivo da Aula

O PROCV (Procura Vertical) é a função mais famosa e utilizada em todo o universo corporativo. Ela é a “ponte” que permite conectar duas tabelas separadas utilizando um identificador comum (como um Código de Produto, CPF ou Placa de Veículo).

Nesta aula, você aprenderá a:

  1. Conectar tabelas no padrão Chave-Valor (Key-Value Pair).
  2. Compreender os 4 argumentos mandatórios do PROCV.
  3. A diferença crucial entre Busca Exata (0 / FALSO) e Busca Aproximada (1 / VERDADEIRO).
  4. Identificar as limitações estruturais do PROCV (a “cegueira para a esquerda” e vulnerabilidade à inserção de colunas).
  5. O paralelo computacional com estruturas de dados Hash Map / Dicionário na programação.

🏢 O Cenário Prático (Seu Desafio)

Situação: A equipe de vendas e expedição da FastLog gerencia um portfólio com mais de 1.000 tipos de caixas, fitas, embalagens e paletes. Toda vez que um pedido é emitido, os operadores perdem até 5 minutos folheando uma tabela impressa para encontrar a descrição e o preço unitário do item.

Missão: Você deve construir um Formulário de Pedido Inteligente. Quando o operador digitar apenas o código do produto (ex: LOG-102), o Excel deve “viajar” até a base de dados do estoque, localizar o item e preencher automaticamente a Descrição, a Categoria e o Preço Unitário.


🧠 Fundamentos: A Teoria das Buscas Relacionais

1. O Conceito de Chave Primária e Chave Estrangeira

Na ciência da computação e nos bancos de dados relacionais (SQL), uma Chave Primária (Primary Key) é um código único que identifica exclusivamente um registro (ex: não existem dois produtos com o mesmo código LOG-101).

O PROCV busca essa chave na primeira coluna da matriz e devolve o atributo desejado que está alinhado na mesma linha:

graph LR
    Input["Código Procurado: 'LOG-102'"] -- "1. PROCV busca na Coluna 1" --> Col1["Coluna 1 (Chaves):<br/>LOG-101<br/>LOG-102 [ENCONTRADO!]<br/>LOG-103"]
    Col1 -- "2. Anda até o Índice de Coluna 3" --> Col3["Coluna 3 (Preços):<br/>R$ 2,50<br/>R$ 4,90 [RETORNA ESSE]<br/>R$ 85,00"]
    Col3 --> Output["Resultado na Célula: R$ 4,90"]
    
    style Col1 fill:#8e44ad,stroke:#fff,stroke-width:2px,color:#fff
    style Col3 fill:#217346,stroke:#fff,stroke-width:2px,color:#fff

2. A Anatomia dos 4 Argumentos do PROCV

1
=PROCV(valor_procurado; matriz_tabela; núm_índice_coluna; [procurar_intervalo])
  1. valor_procurado: O que você tem em mãos? (A chave única que você quer pesquisar, ex: a célula onde o usuário digitou o código E2).
  2. matriz_tabela: Onde está a lista completa de dados? (O intervalo onde a primeira coluna obrigatoriamente contém as chaves, ex: $A$2:$C$50).
  3. núm_índice_coluna: Em qual coluna física da matriz está a resposta que você deseja resgatar? (Contando 1 para a primeira coluna, 2 para a segunda, 3 para a terceira…).
  4. [procurar_intervalo]: O tipo de correspondência:
    • 0 (ou FALSO): Correspondência Exata (Usado em 99% dos casos no mundo corporativo. Se o código não existir, retorna #N/D).
    • 1 (ou VERDADEIRO): Correspondência Aproximada (Usado para faixas numéricas de impostos ou tabelas de desconto; exige que a tabela esteja em ordem crescente).

A Falha Fatal do 0 Esquecido:
Se você esquecer de colocar o ; 0 no final do seu PROCV, o Excel assumirá busca aproximada. Em sistemas logísticos, isso pode fazer o sistema faturar o preço de uma embalagem plástica no lugar de um palete de madeira caro! Coloque sempre ; 0.


3. As Limitações Estruturais do PROCV

Embora poderoso, o PROCV possui dois pontos fracos que você deve conhecer como futuro analista:

  1. Ele só busca para a direita: A chave de busca DEVE estar na coluna 1. Ele nunca consegue olhar para colunas à esquerda.
  2. Índice Estático Rígido: Se alguém inserir uma nova coluna no meio da tabela do estoque, o número 3 da sua fórmula continuará apontando para a terceira coluna, trazendo o dado errado! (Nas próximas aulas, aprenderemos ÍNDICE/CORRESP e PROCX para superar isso).

4. 🌐 Quadro Bilíngue (PT-BR vs EN)

Função (Português)Equivalente em InglêsObservação
PROCVVLOOKUPVertical Lookup (Busca em colunas verticais).
PROCHHLOOKUPHorizontal Lookup (Busca em linhas horizontais).

5. 💡 Visão de Programador: Tabelas Hash e Dicionários

Em linguagens modernas como JavaScript ou Python, o PROCV equivale a acessar um objeto Map / Dicionário através de uma chave:

1
2
3
4
5
6
7
8
# Equivalente em Python:
estoque = {
    "LOG-101": {"descricao": "Caixa P", "preco": 2.50},
    "LOG-102": {"descricao": "Fita Adesiva", "preco": 4.90}
}

codigo = "LOG-102"
preco_unitario = estoque[codigo]["preco"]  # Retorna 4.90

📖 Exemplo Guiado: Agenda Telefônica Automatizada

Passo a Passo

  1. Em A1:B4 monte a base de contatos:
    • Matrícula | Nome_Colaborador
    • 101 | Ana Beatriz
    • 102 | Carlos Silva
    • 103 | Mariana Souza
  2. Em D1 digite Digite a Matrícula:. Em E1, digite 102.
  3. Em D2 digite Nome Encontrado:.
  4. Na célula E2, digite a fórmula: =PROCV(E1; A1:B4; 2; 0)
  5. O Excel retornará imediatamente "Carlos Silva".

🛠️ Prática Obrigatória 1: Emissor Inteligente de Pedidos de Compra

Passo 1: Construindo o Banco de Estoque (Base Mestra)

Na Planilha 1, insira a tabela mestre de produtos nas células A1 até D6:

ABCD
1Cód_ItemDescrição_ProdutoCategoriaPreço_Unitário
21001Caixa de Papelão ReforçadaEmbalagem3,50
31002Fita Gomada com FioFechamento12,00
41003Palete Plástico 1000kgArmazenagem110,00
51004Filme Stretch ManualProteção45,00
61005Cantoneira de PapelãoProteção1,80

Passo 2: Estruturando o Formulário de Emissão de Pedidos

Na mesma planilha, a partir da coluna F, monte a interface do operador (F1 até J5):

  • F1: Cód_Digitado | G1: Descrição_Auto | H1: Preço_Unit | I1: Qtd_Pedida | J1: Subtotal
  • F2: 1003 | I2: 10
  • F3: 1001 | I3: 50
  • F4: 1005 | I4: 200

Passo 3: Programando as Fórmulas de Busca Relacional

  1. Na célula G2, busque a Descrição (Coluna 2 da tabela mestra): =PROCV(F2; $A$2:$D$6; 2; 0)
  2. Na célula H2, busque o Preço Unitário (Coluna 4 da tabela mestra): =PROCV(F2; $A$2:$D$6; 4; 0)
  3. Na célula J2, calcule o Subtotal matemático: =H2 * I2
  4. Selecione G2:J2 e arraste até a linha 4.
  5. Formate as colunas H e J como Moeda (R$).

✅ Resultado Esperado (Prática 1)

FGHIJ
1Cód_DigitadoDescrição_AutoPreço_UnitQtd_PedidaSubtotal
21003Palete Plástico 1000kgR$ 110,0010R$ 1.100,00
31001Caixa de Papelão ReforçadaR$ 3,5050R$ 175,00
41005Cantoneira de PapelãoR$ 1,80200R$ 360,00

🛠️ Prática Obrigatória 2: Busca Aproximada para Tabela Progressiva de Fretes

Quando calculamos faixas de desconto de frete por quilometragem, a busca exata falha porque a distância exata pode não estar na tabela. Usamos a Busca Aproximada (1)!

Passo 1: A Tabela de Tarifas por Faixa de KM

Na Planilha 2 (renomeie para Faixas_Frete), crie:

  • A1: Distância_Mínima (KM) | B1: Taxa_Por_KM (R$)
  • 0 | 3,00 (De 0 a 99 km)
  • 100 | 2,50 (De 100 a 299 km)
  • 300 | 2,00 (De 300 a 499 km)
  • 500 | 1,60 (Acima de 500 km)

(Atenção: A primeira coluna DEVE estar em ordem crescente).

Passo 2: O Simulador com PROCV Aproximado (1)

  1. Em D1: Distância da Rota:. Em E1: digite 250 (km).
  2. Em D2: Tarifa Aplicável:.
  3. Na célula E2, digite: =PROCV(E1; $A$2:$B$5; 2; 1).
  4. O Excel identificará que 250 está entre 100 e 300, retornando perfeitamente R$ 2,50.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve seu arquivo como: Atividade_09_SeuNome_SeuSobrenome.xlsx
  2. No Microsoft Teams, envie na tarefa “Capítulo 09 - Busca com PROCV”.
  3. Clique em Entregar (Turn In).

💡 Checkpoint de Lógica

Você acabou de aplicar o conceito fundamental de Modelagem de Bancos de Dados Relacionais. Em vez de repetir nomes e preços em cada linha de pedido, você normalizou os dados em uma tabela mestre e conectou via chave primária.


🔥 Desafio de Fixação: Blindando o PROCV com SE.NÃO.DISP

No formulário da Prática 1, se você apagar o código em F2, a fórmula exibirá #N/D.

Altere a fórmula da célula G2 para exibir "Código Inválido" em vez do erro:

1
=SE.NÃO.DISP(PROCV(F2; $A$2:$D$6; 2; 0); "Código Inválido")

📝 Atividade Extra: Questionário de Fixação (Caderno)

Instruções: Responda no caderno, de próprio punho, as 10 perguntas abaixo com base no que foi estudado neste capítulo. Ao concluir, leve o caderno até o professor para correção e visto.

  1. O que significa PROCV e para que serve essa função?
  2. Quais são os 4 argumentos do PROCV?
  3. Qual a diferença entre busca exata (0) e busca aproximada (1) no PROCV?
  4. O que acontece se você esquecer de colocar o “0” no final da fórmula PROCV?
  5. Explique a “cegueira para a esquerda” do PROCV — o que isso significa?
  6. Por que a primeira coluna da matriz de busca precisa conter as chaves (identificadores únicos)?
  7. O que é uma Chave Primária, no contexto de bancos de dados?
  8. Qual estrutura de dados em Python é equivalente ao funcionamento do PROCV?
  9. Em que situação é indicado usar busca aproximada (1) em vez de busca exata (0)?
  10. Cite uma limitação estrutural do PROCV relacionada à inserção de novas colunas na tabela.