Capítulo 10: Busca Avançada e Multidirecional (ÍNDICE e CORRESP)
🎯 Objetivo da Aula
O PROCV é popular, mas profissionais de tecnologia e analistas avançados frequentemente preferem a combinação ÍNDICE + CORRESP (Index / Match). Essa dupla supera as duas maiores falhas do PROCV: ela busca em qualquer direção (inclusive para a esquerda) e nunca quebra se colunas forem inseridas ou deletadas na base de dados.
Nesta aula, você aprenderá a:
- Desacoplar o processo de busca em duas etapas: Localização da Posição (
CORRESP) e Extração do Dado (ÍNDICE). - Realizar buscas reversas (para a esquerda da chave).
- Construir buscas em Matrizes Bidimensionais (Cruzamento Linha × Coluna).
- O paralelo com indexação de Matrizes 2D (
Array[linha][coluna]) na programação.
🏢 O Cenário Prático (Seu Desafio)
Situação: O sistema de gestão de frotas da FastLog exporta um relatório onde o Código do Rastreador (Placa) está na última coluna (Coluna D), e o Nome do Motorista Titular está na primeira coluna (Coluna A). Usar PROCV é impossível sem alterar manualmente a ordem de todas as colunas do ERP. Além disso, existe uma tabela de Frete Cruzado por Origem e Destino (uma matriz com 5 cidades nas linhas e 5 cidades nas colunas).
Missão: Você deve:
- Localizar o nome do motorista buscando pela placa (busca reversa para a esquerda).
- Criar um cotador automático de fretes que cruze a Cidade de Origem (Linha) com a Cidade de Destino (Coluna) usando busca bidimensional.
🧠 Fundamentos: A Teoria das Coordenadas Matriciais
1. A Divisão de Trabalho: O Radar e o Braço Mecânico
Em vez de uma única função fazer tudo, dividimos o trabalho em dois especialistas:
graph TD
Key[Placa Procurada: 'BRA-2E19'] --> CORRESP["1. Função CORRESP (O Radar)"]
CORRESP -->|Varre a Coluna de Placas| Pos["Retorna o Índice Numérico: Linha 4"]
Pos --> INDICE["2. Função ÍNDICE (O Braço Mecânico)"]
INDICE -->|Vai até a Linha 4 da Coluna de Motoristas| Result["Retorna o Nome: 'Carlos Eduardo'"]
style CORRESP fill:#8e44ad,stroke:#fff,stroke-width:2px,color:#fff
style Pos fill:#f39c12,stroke:#fff,stroke-width:2px,color:#333
style INDICE fill:#217346,stroke:#fff,stroke-width:2px,color:#fff2. A Função CORRESP (Localizador de Índice)
A função CORRESP não devolve o conteúdo da célula; ela devolve a posição numérica relativa onde o item foi encontrado dentro de uma fila (1º, 2º, 3º…):
=CORRESP("BRA-2E19"; D2:D10; 0)➔ Retorna o número inteiro4(está na 4ª posição da lista).
3. A Função ÍNDICE (Extrator de Conteúdo)
A função ÍNDICE recebe uma lista e um número de posição, e vai até lá para resgatar o valor:
=ÍNDICE(A2:A10; 4)➔ Vai na 4ª linha da coluna de motoristas e extrai o nome.
4. O Aninhamento dos Gigantes: ÍNDICE( ... CORRESP(...) )
Ao substituir o número fixo da linha pelo resultado dinâmico do CORRESP, criamos a busca perfeita:
5. Busca Bidimensional 2D (Matriz Linha × Coluna)
Quando temos uma tabela com dados espalhados em linhas E colunas ao mesmo tempo, usamos dois CORRESP dentro do ÍNDICE:
6. 🌐 Quadro Bilíngue (PT-BR vs EN)
| Função (Português) | Equivalente em Inglês | O que faz? |
|---|---|---|
ÍNDICE | INDEX | Devolve o valor de uma célula em uma coordenada (linha, coluna). |
CORRESP | MATCH | Localiza a posição numérica de um item em um vetor. |
CORRESPX | XMATCH | Versão moderna do CORRESP com busca reversa nativa. |
7. 💡 Visão de Programador: Acesso a Matrizes 2D
Em linguagens estruturadas (C, Java, Python), isso equivale exatamente ao acesso de coordenadas em um Array Bidimensional:
📖 Exemplo Guiado: Busca Invertida Simples
Passo a Passo
- Em A1:B4 crie:
Nome_Motorista(A) |ID_Caminhão(B)Marcos|CAM-01Renata|CAM-02Felipe|CAM-03
- Queremos saber quem dirige o
CAM-02buscando da direita (B) para a esquerda (A). - Em D1 digite
CAM-02. - Na célula D2, monte o aninhamento:
=ÍNDICE(A2:A4; CORRESP(D1; B2:B4; 0)) - O Excel retornará
"Renata"com sucesso.
🛠️ Prática Obrigatória 1: Localizador Reverso de Frotas
Passo 1: A Tabela do ERP com Chave na Última Coluna
Na Planilha 1, insira a base nas células A1 até D5:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Motorista_Titular | Cidade_Base | Tipo_Veiculo | Placa_Rastreador |
| 2 | Lucas Mendes | São Paulo | Carreta | ABC-1001 |
| 3 | Beatriz Rocha | Curitiba | Truck | XYZ-2002 |
| 4 | Tiago Ramos | Rio de Janeiro | Toco | FLX-3003 |
| 5 | Camila Prado | Belo Horizonte | VUC | BRA-4004 |
Passo 2: O Painel de Pesquisa Rápida
A partir da célula F1, estruture a consulta:
- F1:
DIGITE A PLACA:| G1: (DigiteFLX-3003) - F3:
Motorista Localizado: - F4:
Cidade Base:
Passo 3: Aplicando as Fórmulas de ÍNDICE/CORRESP
- Na célula G3, resgate o Motorista (Coluna A):
=ÍNDICE($A$2:$A$5; CORRESP(G1; $D$2:$D$5; 0)) - Na célula G4, resgate a Cidade Base (Coluna B):
=ÍNDICE($B$2:$B$5; CORRESP(G1; $D$2:$D$5; 0))
✅ Resultado Esperado (Prática 1)
Ao digitar FLX-3003, o sistema exibirá automaticamente:
- Motorista:
Tiago Ramos - Cidade Base:
Rio de Janeiro
🛠️ Prática Obrigatória 2: Matriz 2D de Fretes Cruzados (Origem × Destino)
Passo 1: Construindo a Matriz de Tarifas
Na Planilha 2 (renomeie para Matriz_Tarifas), insira a grade tarifária nas células A1 até D4:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Origem \ Destino | São Paulo | Rio de Janeiro | Belo Horizonte |
| 2 | São Paulo | 0,00 | 850,00 | 1100,00 |
| 3 | Rio de Janeiro | 850,00 | 0,00 | 600,00 |
| 4 | Belo Horizonte | 1100,00 | 600,00 | 0,00 |
Passo 2: O Simulador de Rotas
Nas células F1 até G3:
- F1:
Cidade Origem:| G1:Rio de Janeiro - F2:
Cidade Destino:| G2:Belo Horizonte - F3:
Valor do Frete:
Passo 3: A Fórmula Bidimensional
Na célula G3, cruze as coordenadas:
✅ Resultado Esperado (Prática 2)
O Excel cruzará a linha de Rio de Janeiro com a coluna de Belo Horizonte e retornará exatamente R$ 600,00.
📤 Instruções de Entrega (Microsoft Teams)
- Salve seu arquivo como:
Atividade_10_SeuNome_SeuSobrenome.xlsx - No Microsoft Teams, envie na tarefa “Capítulo 10 - ÍNDICE e CORRESP”.
- Clique em Entregar (Turn In).
💡 Checkpoint de Lógica
Você aprendeu como a Indexação por Coordenadas desacopla a regra de busca da estrutura da planilha, criando arquiteturas de dados infinitamente mais robustas e imunes a alterações de layout.
🔥 Desafio de Fixação: Localizador do Veículo com Maior Custo
Volte à tabela da Prática 1 (Planilha 1) e acrescente uma coluna extra, E: Custo_Frete, com estes valores de teste:
- E2:
4200(Lucas Mendes) | E3:3100(Beatriz Rocha) | E4:5600(Tiago Ramos) | E5:2900(Camila Prado)
A função MÁXIMO(intervalo) retorna o maior valor numérico de um intervalo — combine-a com CORRESP e ÍNDICE para encontrar o nome do motorista com o maior custo de frete:
✅ Resultado Esperado (Desafio)
O maior valor em E2:E5 é 5600 (linha 4), então a fórmula retorna Tiago Ramos.
📝 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.
- Qual a função de CORRESP e o que ela retorna?
- Qual a função de ÍNDICE e o que ela retorna?
- Por que a combinação ÍNDICE + CORRESP consegue buscar valores “para a esquerda”, diferente do PROCV?
- Escreva a estrutura geral de uma fórmula que combina ÍNDICE com CORRESP.
- O que é necessário para fazer uma busca bidimensional (linha x coluna) usando ÍNDICE?
- Qual a vantagem de ÍNDICE/CORRESP em relação ao PROCV quando uma coluna é inserida na tabela?
- Na analogia do “radar” e do “braço mecânico”, qual função representa cada papel?
- Dê um exemplo de situação logística em que a busca reversa (da direita para a esquerda) é necessária.
- Como o acesso a uma Matriz Bidimensional em programação (Array[linha][coluna]) se relaciona com ÍNDICE/CORRESP?
- Qual a função moderna (CORRESPX) que substitui o CORRESP com busca reversa nativa?