Capítulo 11: A Evolução da Busca Moderna (A Função PROCX)

🎯 Objetivo da Aula

A Microsoft analisou décadas de uso do PROCV e do ÍNDICE/CORRESP e desenvolveu a função de busca mais poderosa, elegante e simples da história das planilhas: o PROCX (XLOOKUP).

Nesta aula, você aprenderá a:

  1. Utilizar a sintaxe limpa de 3 argumentos básicos do PROCX.
  2. Tratar ausência de dados nativamente com o 4º argumento [se_não_encontrado] (dizendo adeus definitivo ao #N/D).
  3. Realizar pesquisas cronológicas reversas (do fim para o início com modo_pesquisa = -1).
  4. Utilizar o recurso revolucionário de Matrizes Dinâmicas de Multirretorno (uma única fórmula preenche várias colunas vizinhas automaticamente).
  5. O paralelo com o design de APIs Modernas na programação.

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

Situação: O SAC e o Centro de Rastreamento da FastLog recebem mais de 2.000 chamados diários de clientes querendo saber o status da entrega. No sistema, as cargas sofrem atualizações frequentes ao longo do dia, e o histórico grava os registros em ordem cronológica de cima para baixo.

Missão: Você deve construir o Rastreador Expresso FastLog:

  1. Ao digitar o Código do Pacote (ex: FL-9090), a fórmula deve preencher instantaneamente a Cidade Atual, o Status e o Motorista de uma só vez.
  2. Se o atendente digitar um código inexistente, o sistema deve exibir "Código Não Cadastrado" automaticamente.
  3. Se o pacote tiver múltiplos registros no dia, o sistema deve buscar a última ocorrência registrada (pesquisa de baixo para cima).

🧠 Fundamentos: A Arquitetura do PROCX

1. A Comparação Definitiva: PROCV vs ÍNDICE/CORRESP vs PROCX

RecursoPROCVÍNDICE / CORRESPPROCX (Moderno)
Busca para a Direita✅ Sim✅ SimSim
Busca para a Esquerda (Reversa)❌ Não✅ SimSim
Tratamento de Erro Integrado❌ Exige SEERRO❌ Exige SE.NÃO.DISPSim (4º argumento)
Retorno de Várias Colunas Simultâneas❌ Não❌ NãoSim (Matriz Dinâmica)
Quebra se Colunas forem Inseridas?⚠️ Sim (Quebra)🛡️ Imune🛡️ Totalmente Imune
Sintaxe e FacilidadeMédiaComplexaExtremamente Simples

2. A Anatomia Completa dos Argumentos do PROCX

1
=PROCX(pesquisa_valor; pesquisa_matriz; matriz_retorno; [se_não_encontrado]; [modo_correspondência]; [modo_pesquisa])
graph LR
    Search["1. Código: 'FL-9090'"] --> MatrizP["2. Onde buscar?<br/>Coluna B (Códigos)"]
    MatrizP --> Found{Encontrou?}
    Found -- Sim --> MatrizR["3. O que trazer?<br/>Colunas C até E (Destino, Status, Motorista)"]
    Found -- Não --> Fallback["4. O que escrever?<br/>'Código Inválido'"]
    
    style Search fill:#2980b9,stroke:#fff,stroke-width:2px,color:#fff
    style MatrizR fill:#217346,stroke:#fff,stroke-width:2px,color:#fff
    style Fallback fill:#e67e22,stroke:#fff,stroke-width:2px,color:#fff

Os 6 Argumentos Detalhados:

  1. pesquisa_valor: O valor ou célula que você quer procurar.
  2. pesquisa_matriz: Apenas a coluna onde estão os códigos de busca.
  3. matriz_retorno: A coluna (ou conjunto de colunas) onde estão as respostas.
  4. [se_não_encontrado]: (Opcional) Texto ou valor caso não encontre nada (ex: "Não Localizado").
  5. [modo_correspondência]: (Opcional)
    • 0: Exata (Padrão nativo do PROCX, não precisa digitar!).
    • -1: Exata ou próximo menor.
    • 1: Exata ou próximo maior.
    • 2: Correspondência por caractere curinga (* e ?).
  6. [modo_pesquisa]: (Opcional)
    • 1: Do primeiro ao último (De cima para baixo - Padrão).
    • -1: Do último ao primeiro (De baixo para cima - busca o evento mais recente!).

3. O Fenômeno do “Despejo” (Spill Range): Multirretorno

Se você selecionar um intervalo de 3 colunas na matriz de retorno (ex: C2:E10), o PROCX colocará a primeira resposta na célula onde você digitou e “despejará” as outras duas respostas nas células imediatamente à direita sozinho!


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

Função (Português)Equivalente em InglêsObservação
PROCXXLOOKUPDisponível a partir do Excel 2021 e Microsoft 365.
CORRESPXXMATCHVersão moderna do CORRESP com suporte nativo a busca reversa.

5. 💡 Visão de Programador: Evolução de Linguagens de Programação

O PROCX representa a evolução das APIs de software. Em JavaScript, por exemplo, métodos legados como indexOf exigiam controle manual de índices, enquanto o moderno .find() e o método .get(key, default) do Python entregam tratamento de valor padrão e busca fluida em uma linha:

1
2
# Equivalente ao =PROCX(codigo, tabela_codigos, tabela_status, "Não Localizado")
status = rastreamento.get(codigo, "Não Localizado")

📖 Exemplo Guiado: Busca Reversa e Tratamento em 1 Passo

Passo a Passo

  1. Em A1:C3 monte a tabela com o código no meio:
    • Valor (R$) (A) | ID_Carga (B) | Destino (C)
    • 1500 | FL-01 | Rio de Janeiro
    • 3200 | FL-02 | Curitiba
  2. Em E1 digite ID_Carga:. Em F1, digite FL-99 (código falso).
  3. Na célula F2, teste o PROCX buscando o Valor (Coluna A) com mensagem de erro nativa: =PROCX(F1; B2:B3; A2:A3; "ID Não Existe")
  4. O Excel retornará "ID Não Existe" sem precisar de SEERRO!
  5. Mude F1 para FL-02. O Excel retornará 3200.

🛠️ Prática Obrigatória 1: Central de Rastreamento com Multirretorno

Passo 1: A Base de Encomendas

Na Planilha 1, insira a tabela nas células A1 até D5:

ABCD
1Cod_RastreioDestino_FinalMotorista_EscaladoStatus_Atual
2TR-100Porto Alegre - RSMarcos PontesEm Trânsito
3TR-200Salvador - BAJuliana PaesNo Galpão
4TR-300Brasília - DFRoberto FirminoEntregue
5TR-400Manaus - AMCamila QueirozEm Trânsito

Passo 2: O Painel do Operador

Nas células F1 até I2:

  • F1: DIGITE O CÓDIGO: | F2: (Digite TR-300)
  • G1: Destino | H1: Motorista | I1: Status

Passo 3: A Mágica da Fórmula Única com Multirretorno

  1. Clique na célula G2 (Apenas nela!).
  2. Digite a fórmula selecionando todas as colunas de retorno de uma vez (B2:D5): =PROCX(F2; $A$2:$A$5; $B$2:$D$5; "Pacote Não Encontrado")
  3. Pressione Enter!

✅ Resultado Esperado (Prática 1)

O Excel preencherá sozinho as células G2, H2 e I2:

  • G2: Brasília - DF
  • H2: Roberto Firmino
  • I2: Entregue

Se você digitar TR-999 em F2, as células exibirão "Pacote Não Encontrado".


🛠️ Prática Obrigatória 2: Busca da Última Ocorrência (De Baixo para Cima)

Quando um veículo passa por vários pedágios ou postos fiscais, queremos saber o último status registrado.

Passo 1: O Histórico de Passagens

Na Planilha 2 (renomeie para Ultimo_Status), monte a base cronológica nas células A1 até C6:

ABC
1PlacaHorárioPosto_Fiscal
2ABC-123408:00Posto 01 - SP
3XYZ-999909:15Posto 01 - SP
4ABC-123411:30Posto 02 - Campinas
5ABC-123415:45Posto 03 - Ribeirão Preto
6XYZ-999914:00Posto 02 - Jacareí

Passo 2: A Busca pelo Último Ponto com modo_pesquisa = -1

Nas células E1 até F2:

  • E1: Consultar Placa: | F1: ABC-1234
  • E2: Última Localização Registrada:
  1. Na célula F2, use o modo de pesquisa invertida: =PROCX(F1; A2:A6; C2:C6; "Sem Registro"; 0; -1)

✅ Resultado Esperado (Prática 2)

O PROCV clássico retornaria a linha 2 (Posto 01). O PROCX com -1 lê de baixo para cima e retorna perfeitamente o último evento: Posto 03 - Ribeirão Preto!


📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_11_SeuNome_SeuSobrenome.xlsx
  2. No Microsoft Teams, envie na tarefa “Capítulo 11 - Função PROCX”.
  3. Clique em Entregar (Turn In).

💡 Checkpoint de Lógica

Você aprendeu como arquitetar soluções com a ferramenta de busca mais avançada do mercado. O PROCX consolida busca vertical, busca reversa, multirretorno e tratamento de exceção em uma única linha de raciocínio.


🔥 Desafio de Fixação: Busca com Curingas (*)

Use o argumento de correspondência com caractere curinga (modo_correspondência = 2) para encontrar a localização de uma carga digitando apenas parte do código (ex: *400*):

1
=PROCX("*" & F2 & "*"; A2:A5; B2:D5; "Não Encontrado"; 2)

📝 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 PROCX e qual é o nome dessa função em inglês?
  2. Quais são os três primeiros argumentos obrigatórios do PROCX?
  3. Como o PROCX trata a ausência de resultados sem precisar de SEERRO?
  4. O que é o “Despejo” (Spill Range) e como ele funciona no PROCX?
  5. Qual argumento do PROCX permite fazer a busca de baixo para cima (do registro mais recente)?
  6. Compare PROCV, ÍNDICE/CORRESP e PROCX em relação à capacidade de retornar múltiplas colunas.
  7. Escreva um exemplo de fórmula PROCX com tratamento de erro embutido.
  8. Por que o PROCX é considerado mais “imune” a mudanças estruturais na planilha?
  9. O que significa o modo de correspondência “2” (curinga) no PROCX?
  10. Explique com suas palavras por que o PROCX é chamado de “evolução” do PROCV.