About Me
Seguidores
Estatisticas
191: VBA - IF's aninhados - UDF
Por mail, recebi a seguinte pergunta: "Tenho o office 2003 instalado e necessito de colocar numa fórmula mais de sete "IF's" consecutivos, pois estou a comparar valores do mês actual com valores de meses anteriores. Como fazer?"
Como é sabido, o Excel apenas permite até 7 IF's [Função IF()] aninhados.
Uma das maneiras de obviar este pequeno problema, será utilizar uma UDF [User Defined Function] que permita estabelecer mais do que 7 critérios.
A UDF que apresento a seguir [a qual deverá ser copiada para um módulo de VBA, utilizando ALT + F11, para a ceder ao Editor de VBA e criando um novo módulo - Insert > Module -], possibilita a utilização de tantos critérios, quantos os que sejam necessários, embora se verifique que, quantos mais critérios, mais lento se tornará o cálculo, como é evidente.
O Código (créditos para Harlan Grove - ver perfil):
Function multi_if(ParamArray a() As Variant) As VariantDim i As Long, n As Long
n = UBound(a)
If n Mod 2 = 0 Then
multi_if = a(UBound(a))
n = n - 1
Else
multi_if = False
End If
For i = 0 To n Step 2
If CBool(a(i)) And i < n Then
multi_if = a(i + 1)
Exit For
End If
Next i
End Function
E, agora, apresento a máscara de utilização da função:
=multi_if (condition_a;value_a;condition_b;value_b;condition_c;value_c;
condition_d;value_d;condition_e;value_e;condition_f;value_f;
condition_g;value_g;condition_h,value_h;value_else)
O exemplo:
=multi_if(AP4=0;0;$D4<>0;AP4/$D4;$J4<>0;AP4/$J4;$N4<>0;AP4/$N4;$R4<>0;AP4/$R4;$V4<>0;AP4/$V4;$Z4<>0;AP4/$Z4;$AD4<>0;AP4/$AD4;$AH4<>0;AP4/$AH4;$AL4<>0;AP4/$AL4;1)
- Tópicos relacionados: