Lista Suspensa Dependente no Excel: Como Fazer Listas em Cascata

Você já criou uma lista suspensa de estado e outra de cidade na mesma planilha, e viu que a lista de cidades mostrava todas as cidades do Brasil juntas, mesmo depois de escolher um estado específico? Ou precisou montar um formulário onde a categoria escolhida deveria filtrar automaticamente as opções de subcategoria?

O problema de uma lista suspensa comum é que ela é sempre fixa — mostra as mesmas opções pra todo mundo, o tempo todo, sem reagir ao que já foi escolhido em outra célula. Isso obriga quem preenche a planilha a procurar a opção certa em uma lista longa e sem filtro, aumentando a chance de erro de digitação ou escolha errada.

Neste artigo vamos mostrar como montar uma lista suspensa dependente (também chamada de lista em cascata), onde as opções de uma lista mudam automaticamente de acordo com o que foi escolhido em outra.

A ideia geral

Uma lista dependente funciona em duas camadas: a primeira lista (por exemplo, Estado) é uma lista suspensa comum. A segunda lista (Cidade) usa uma fórmula que filtra as opções com base no valor escolhido na primeira, em vez de mostrar uma lista fixa.

DOMINE EXCEL COMIGO

QUERO APRENDER EXCEL

Passo 1: organizar os dados de origem

Antes de criar a lista, organize as opções da segunda lista agrupadas por categoria da primeira. Uma forma prática é ter uma tabela com duas colunas, Estado e Cidade:

Tabela com colunas Estado e Cidade, várias cidades para cada estado

Passo 2: criar a primeira lista suspensa

Selecione a célula onde vai ficar a lista de Estado, vá em Dados > Validação de Dados, escolha “Lista” como critério, e informe o intervalo com os estados únicos (sem repetição).

Passo 3: montar a lista dependente com FILTRO

Com o Excel 365, o jeito mais simples de fazer a segunda lista reagir à primeira é usando a função FILTRO como origem da validação de dados. Supondo que o Estado escolhido esteja na célula B1, e a tabela de origem esteja em D2:E20 (colunas Estado e Cidade):

=FILTRO(E2:E20; D2:D20=B1)

Ao configurar a validação de dados da célula de Cidade, em vez de digitar um intervalo fixo, use essa fórmula como origem da lista. Assim, a lista de cidades mostra automaticamente só as cidades do estado escolhido em B1 — e se você trocar o estado, a lista de cidades se atualiza sozinha.

Alternativa sem matriz dinâmica: nomes definidos

Em versões do Excel sem FILTRO (2019 ou anteriores), o caminho tradicional é usar intervalos nomeados combinados com a função INDIRETO. A ideia é criar um nome definido para cada grupo de cidades, com o mesmo nome do estado correspondente (por exemplo, um intervalo nomeado “São_Paulo” com as cidades daquele estado). Na validação de dados da célula de Cidade, a origem da lista fica:

=INDIRETO(SUBSTITUIR(B1;” “;”_”))

O SUBSTITUIR troca espaços por sublinhado, porque nomes definidos no Excel não podem ter espaço. O INDIRETO então transforma o texto do nome do estado em uma referência real ao intervalo nomeado correspondente.

Estendendo para um terceiro nível

A mesma lógica se estende para mais níveis — por exemplo, Estado > Cidade > Bairro. Com FILTRO, basta encadear o filtro adicional na terceira lista, referenciando as duas escolhas anteriores:

=FILTRO(G2:G50; (E2:E50=B1) * (F2:F50=B2))

O asterisco entre as duas condições funciona como um “E” — a lista de bairros só mostra os que atendem às duas condições ao mesmo tempo (do estado e da cidade escolhidos).

Evitando escolha “presa” de um nível anterior

Um problema comum em listas em cascata é o usuário trocar o Estado depois de já ter escolhido uma Cidade, e a célula de Cidade continuar mostrando uma cidade que não pertence mais ao novo estado selecionado. A validação de dados não limpa isso sozinha. Uma solução prática é usar Formatação Condicional para destacar em vermelho a célula de Cidade quando o valor nela não corresponder mais às opções válidas do Estado atual, chamando atenção para que o usuário escolha de novo.

Comparando as duas abordagens

✅ FILTRO é mais simples de montar e manter, porque não exige criar um nome definido para cada categoria — só uma tabela de dados de origem
❌ FILTRO exige Excel 365 ou 2021; em versões mais antigas, a abordagem com nomes definidos e INDIRETO é a única opção viável

Ordenando e removendo duplicatas automaticamente

Se a tabela de origem tiver cidades repetidas ou fora de ordem para o mesmo estado, combine FILTRO com ÚNICO e CLASSIFICAR para garantir que a lista suspensa mostre cada opção uma única vez, em ordem alfabética, mesmo que a base de dados tenha duplicatas:

=CLASSIFICAR(ÚNICO(FILTRO(E2:E20;D2:D20=B1)))

Isso evita que a lista de cidades mostre “Campinas” duas vezes só porque ela aparece duas vezes na tabela de origem, e evita que o usuário tenha que rolar por uma lista fora de ordem procurando a opção certa.

Erro comum

O erro mais comum na abordagem com nomes definidos é esquecer que o nome de cada intervalo precisa ser idêntico ao valor da primeira lista, incluindo capitalização e sem espaços — qualquer diferença faz o INDIRETO não encontrar o intervalo e a lista de cidades aparece vazia. Na abordagem com FILTRO, o erro mais comum é a célula de Cidade mostrar erro #CALC! quando nenhuma opção corresponde ao Estado escolhido — nesse caso, vale envolver a fórmula com SEERRO para mostrar uma mensagem mais amigável no lugar do erro.

Disponibilidade

A abordagem com FILTRO exige Excel 365, Excel 2021 ou Excel 2024. A abordagem com nomes definidos e INDIRETO funciona em praticamente todas as versões do Excel, incluindo as mais antigas, e também no Google Sheets.

Compartilhe ou Comente

Se você curtiu esse artigo aonde mostramos como criar listas suspensas dependentes (em cascata) no Excel, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.

Você vai usar lista dependente pra Estado/Cidade, Categoria/Produto, ou outra coisa na sua planilha? Já tentou montar isso antes e travou em algum ponto? Conta para nós nos comentários!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *