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:
- Utilizar a sintaxe limpa de 3 argumentos básicos do
PROCX. - Tratar ausência de dados nativamente com o 4º argumento
[se_não_encontrado](dizendo adeus definitivo ao#N/D). - Realizar pesquisas cronológicas reversas (do fim para o início com
modo_pesquisa = -1). - Utilizar o recurso revolucionário de Matrizes Dinâmicas de Multirretorno (uma única fórmula preenche várias colunas vizinhas automaticamente).
- 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:
- 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. - Se o atendente digitar um código inexistente, o sistema deve exibir
"Código Não Cadastrado"automaticamente. - 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
| Recurso | PROCV | ÍNDICE / CORRESP | PROCX (Moderno) |
|---|---|---|---|
| Busca para a Direita | ✅ Sim | ✅ Sim | ✅ Sim |
| Busca para a Esquerda (Reversa) | ❌ Não | ✅ Sim | ✅ Sim |
| Tratamento de Erro Integrado | ❌ Exige SEERRO | ❌ Exige SE.NÃO.DISP | ✅ Sim (4º argumento) |
| Retorno de Várias Colunas Simultâneas | ❌ Não | ❌ Não | ✅ Sim (Matriz Dinâmica) |
| Quebra se Colunas forem Inseridas? | ⚠️ Sim (Quebra) | 🛡️ Imune | 🛡️ Totalmente Imune |
| Sintaxe e Facilidade | Média | Complexa | ⚡ Extremamente Simples |
2. A Anatomia Completa dos Argumentos do PROCX
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:#fffOs 6 Argumentos Detalhados:
pesquisa_valor: O valor ou célula que você quer procurar.pesquisa_matriz: Apenas a coluna onde estão os códigos de busca.matriz_retorno: A coluna (ou conjunto de colunas) onde estão as respostas.[se_não_encontrado]: (Opcional) Texto ou valor caso não encontre nada (ex:"Não Localizado").[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?).
[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ês | Observação |
|---|---|---|
PROCX | XLOOKUP | Disponível a partir do Excel 2021 e Microsoft 365. |
CORRESPX | XMATCH | Versã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:
📖 Exemplo Guiado: Busca Reversa e Tratamento em 1 Passo
Passo a Passo
- 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 Janeiro3200|FL-02|Curitiba
- Em E1 digite
ID_Carga:. Em F1, digiteFL-99(código falso). - 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") - O Excel retornará
"ID Não Existe"sem precisar deSEERRO! - 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:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Cod_Rastreio | Destino_Final | Motorista_Escalado | Status_Atual |
| 2 | TR-100 | Porto Alegre - RS | Marcos Pontes | Em Trânsito |
| 3 | TR-200 | Salvador - BA | Juliana Paes | No Galpão |
| 4 | TR-300 | Brasília - DF | Roberto Firmino | Entregue |
| 5 | TR-400 | Manaus - AM | Camila Queiroz | Em Trânsito |
Passo 2: O Painel do Operador
Nas células F1 até I2:
- F1:
DIGITE O CÓDIGO:| F2: (DigiteTR-300) - G1:
Destino| H1:Motorista| I1:Status
Passo 3: A Mágica da Fórmula Única com Multirretorno
- Clique na célula G2 (Apenas nela!).
- 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") - 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:
| A | B | C | |
|---|---|---|---|
| 1 | Placa | Horário | Posto_Fiscal |
| 2 | ABC-1234 | 08:00 | Posto 01 - SP |
| 3 | XYZ-9999 | 09:15 | Posto 01 - SP |
| 4 | ABC-1234 | 11:30 | Posto 02 - Campinas |
| 5 | ABC-1234 | 15:45 | Posto 03 - Ribeirão Preto |
| 6 | XYZ-9999 | 14:00 | Posto 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:
- 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)
- Salve o arquivo como:
Atividade_11_SeuNome_SeuSobrenome.xlsx - No Microsoft Teams, envie na tarefa “Capítulo 11 - Função PROCX”.
- 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*):
📝 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.
- O que significa PROCX e qual é o nome dessa função em inglês?
- Quais são os três primeiros argumentos obrigatórios do PROCX?
- Como o PROCX trata a ausência de resultados sem precisar de SEERRO?
- O que é o “Despejo” (Spill Range) e como ele funciona no PROCX?
- Qual argumento do PROCX permite fazer a busca de baixo para cima (do registro mais recente)?
- Compare PROCV, ÍNDICE/CORRESP e PROCX em relação à capacidade de retornar múltiplas colunas.
- Escreva um exemplo de fórmula PROCX com tratamento de erro embutido.
- Por que o PROCX é considerado mais “imune” a mudanças estruturais na planilha?
- O que significa o modo de correspondência “2” (curinga) no PROCX?
- Explique com suas palavras por que o PROCX é chamado de “evolução” do PROCV.