Função Case no Excel VBA

Gráfico Mapa de Resultado por Região- Excel e VBA
Gráfico Mapa de Resultado por Região- Excel e VBA
12 de junho de 2011
Planilha de Cálculo de Horas Extras com Acesso a Banco de Dados Access - VBA
Planilha de Cálculo de Horas Extras com Acesso a Banco de Dados Access – VBA
22 de junho de 2011

Objetivo: Demonstrar o uso de uma função própria criada para simular a função Case.

Agradecimento especial a colaboração de Jardel Novaes neste artigo.


Quem nunca teve que fazer um aninhamento de SE? Aquelas funções enormes que ficam com um monte de SE isso faça isso, senão faça aquilo, senão faça este outro, etc. Em programação em determinadas situações substitui-se este aninhamento de funções SE pelo uso da função CASE, que funciona da seguinte forma.

  • Você define qual a variável que será testada, no Excel seria o mesmo que verificar o resultado de uma célula;
  • Para cada resultado da célula a função executa uma outra função ou passa um valor fixo ou ainda o resultado de uma variável ou célula, conforme exemplo da tabela abaixo aonde a cada valor alterado é aplicada uma fórmula diferente.

Na prática, na medida em que você altera o resultado de uma célula que é testada, ele aplica uma fórmula ou célula. Assim como na função CASE de programação, o valor desta variável pode ser qualquer um, tanto faz se um número ou um texto, porém, ele deve ser exato, não permitindo operadores >(maior) e <(menor) ou ainda outros testes de lógica.

Public Function gfCase(ByVal Parametro As Variant, ParamArray Arr() As Variant) As Variant
    Application.Volatile

    For i = 0 To UBound(Arr)
        If i Mod 2 = 0 And Arr(i) = Parametro Then
            gfCase = Arr(i + 1)
            i = UBound(Arr)
        End If
    Next i
End Function
  • Entendendo os parâmetros da função
  1. O primeiro parâmetro que você passa é a célula que contém o valor que será testado;
  2. O segundo parâmetro é o teste da célula;
  3. O terceiro parâmetro é o resultado que deve ser demonstrado na célula caso o primeiro parâmetro seja equivalente ao segundo;
  4. Repita o segundo e terceiro passo tantas vezes quantos forem os seus parâmetros e resultados.
  • Exemplo: gfCase(D3;1;”Resultado 1″;2;”Resultado 2″), se a célula D3 for alterada para 1 a outra célula aonde consta a função exibirá Resultado 1, caso o valor de D3 seja 2 então o resultado será Resultado 2.

Ganho real:

Com o uso de gfCase:

=gfCase(E3;H9;I9;H10;I10;H11;I11;H12;I12;H13;I13;H14;I14;H15;I15;H16;I16;H17;I17;H18;I18)

Com o uso de SE aninhado:

=SE(E3=H9;I9;SE(E3=H10;I10;SE(E3=H11;I11;SE(E3=H12;I12;SE(E3=H13;I13;SE(E3=H14;I14;SE(E3=H15;I15;SE(E3=H16;I16;SE(E3=H17;I17;SE(E3=H18;I18;””))))))))))

GUT PPT Abraço Marcos Rieper


Clique aqui e leia mais sobre Excel VBA. https://www.guiadoexcel.com.br/vba/ O Guia do Excel foi criado por Marcos Rieper e oferece artigos, dicas, tutoriais e modelos de planilhas prontas. Aqui você encontra tudo sobre Excel, seja de nível básico, intermediário,  avançado e VBA. O Guia do Excel oferece diversos materiais completamente gratuitos para download. Navegue em nosso site e confira! Conheça também a nossa Loja do Excel https://loja.guiadoexcel.com.br/
Cursos

Curso Excel Completo – Curso Excel Básico + Curso Excel Avançado – Acesso Vitalício

R$218,00 R$179,00

COMPRAR
Cursos

Curso Excel Master – Curso Excel Básico + Curso Excel Avançado + Curso VBA Excel + LP – Acesso Vitalício

R$357,00 R$249,00

COMPRAR
Cursos

Curso Excel PRO – Curso Excel Avançado + Curso VBA Excel + Lógica de programação – Acesso Vitalício

R$258,00 R$199,00

COMPRAR
Cursos

Curso Excel Web – Curso VBA Excel + Lógica de programação + Curso Web Scraping VBA- Acesso Vitalício

R$388,90 R$309,00

COMPRAR

3 Comentários

  1. Rodrigo disse:

    Boa tarde Marcos, obrigado pelo conteúdo.

    Logo no início do texto você comenta: “Assim como na função CASE de programação, o valor desta variável pode ser qualquer um, tanto faz se um número ou um texto, porém, ele deve ser exato, não permitindo operadores >(maior) e <(menor) ou ainda outros testes de lógica."

    Existe alguma alternativa/adaptação caso eu queira buscar um valor que não seja exato, mas apenas contendo parte do conteúdo buscado? (exemplo: gostaria de buscar somente a palavra Rio em qualquer célula, seja Rio de Janeiro ou Rio Grande.)

    Obrigado,
    Rodrigo.

Deixe uma resposta

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.