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:

  1. Desacoplar o processo de busca em duas etapas: Localização da Posição (CORRESP) e Extração do Dado (ÍNDICE).
  2. Realizar buscas reversas (para a esquerda da chave).
  3. Construir buscas em Matrizes Bidimensionais (Cruzamento Linha × Coluna).
  4. 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:

  1. Localizar o nome do motorista buscando pela placa (busca reversa para a esquerda).
  2. 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:#fff

2. 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º…):

1
=CORRESP(valor_procurado; matriz_procurada; [tipo_correspondencia])
  • =CORRESP("BRA-2E19"; D2:D10; 0) ➔ Retorna o número inteiro 4 (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:

1
=ÍNDICE(matriz; num_linha; [num_coluna])
  • =Í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:

1
=ÍNDICE(coluna_da_resposta; CORRESP(chave_procurada; coluna_da_chave; 0))

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:

1
=ÍNDICE(matriz_dados; CORRESP(origem; linhas; 0); CORRESP(destino; colunas; 0))

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

Função (Português)Equivalente em InglêsO que faz?
ÍNDICEINDEXDevolve o valor de uma célula em uma coordenada (linha, coluna).
CORRESPMATCHLocaliza a posição numérica de um item em um vetor.
CORRESPXXMATCHVersã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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Matriz de Tarifas [Origem][Destino]
tarifas = [
    [0, 150, 300],   # SP para [SP, RJ, MG]
    [150, 0, 220],   # RJ para [SP, RJ, MG]
    [300, 220, 0]    # MG para [SP, RJ, MG]
]

linha = 1  # RJ (Índice achado via MATCH)
coluna = 2 # MG (Índice achado via MATCH)

custo = tarifas[linha][coluna] # Retorna 220

📖 Exemplo Guiado: Busca Invertida Simples

Passo a Passo

  1. Em A1:B4 crie:
    • Nome_Motorista (A) | ID_Caminhão (B)
    • Marcos | CAM-01
    • Renata | CAM-02
    • Felipe | CAM-03
  2. Queremos saber quem dirige o CAM-02 buscando da direita (B) para a esquerda (A).
  3. Em D1 digite CAM-02.
  4. Na célula D2, monte o aninhamento: =ÍNDICE(A2:A4; CORRESP(D1; B2:B4; 0))
  5. 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:

ABCD
1Motorista_TitularCidade_BaseTipo_VeiculoPlaca_Rastreador
2Lucas MendesSão PauloCarretaABC-1001
3Beatriz RochaCuritibaTruckXYZ-2002
4Tiago RamosRio de JaneiroTocoFLX-3003
5Camila PradoBelo HorizonteVUCBRA-4004

Passo 2: O Painel de Pesquisa Rápida

A partir da célula F1, estruture a consulta:

  • F1: DIGITE A PLACA: | G1: (Digite FLX-3003)
  • F3: Motorista Localizado:
  • F4: Cidade Base:

Passo 3: Aplicando as Fórmulas de ÍNDICE/CORRESP

  1. Na célula G3, resgate o Motorista (Coluna A): =ÍNDICE($A$2:$A$5; CORRESP(G1; $D$2:$D$5; 0))
  2. 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:

ABCD
1Origem \ DestinoSão PauloRio de JaneiroBelo Horizonte
2São Paulo0,00850,001100,00
3Rio de Janeiro850,000,00600,00
4Belo Horizonte1100,00600,000,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:

1
=ÍNDICE(B2:D4; CORRESP(G1; A2:A4; 0); CORRESP(G2; B1:D1; 0))

✅ 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)

  1. Salve seu arquivo como: Atividade_10_SeuNome_SeuSobrenome.xlsx
  2. No Microsoft Teams, envie na tarefa “Capítulo 10 - ÍNDICE e CORRESP”.
  3. 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:

1
=ÍNDICE(A2:A5; CORRESP(MÁXIMO(E2:E5); E2:E5; 0))

✅ 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.

  1. Qual a função de CORRESP e o que ela retorna?
  2. Qual a função de ÍNDICE e o que ela retorna?
  3. Por que a combinação ÍNDICE + CORRESP consegue buscar valores “para a esquerda”, diferente do PROCV?
  4. Escreva a estrutura geral de uma fórmula que combina ÍNDICE com CORRESP.
  5. O que é necessário para fazer uma busca bidimensional (linha x coluna) usando ÍNDICE?
  6. Qual a vantagem de ÍNDICE/CORRESP em relação ao PROCV quando uma coluna é inserida na tabela?
  7. Na analogia do “radar” e do “braço mecânico”, qual função representa cada papel?
  8. Dê um exemplo de situação logística em que a busca reversa (da direita para a esquerda) é necessária.
  9. Como o acesso a uma Matriz Bidimensional em programação (Array[linha][coluna]) se relaciona com ÍNDICE/CORRESP?
  10. Qual a função moderna (CORRESPX) que substitui o CORRESP com busca reversa nativa?