Função Case no Excel VBA

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.

//

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

 

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.

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

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;””))))))))))

Abraço Marcos Rieper

//

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

 

Sair da versão mobile