Forum Discussion
IF statement with several conditions
- Anonymous8 years ago
Hi all, thank you for your kind replies!! I managed to get the results using the formula below after several attempts :)
Formula:
Hi Anonymous,
The way you tried to build this is via a nested if. This is possible, but the best solution is using vcastello's Switch function here since its faster on execution and also much easier to understand for a large number of possible criteria. If you really want this as a nested if, it should look something like this:
If( Arrears[TCMRScoring_ArrearsAcct %] < 3 = 5,
If( Arrears[TCMRScoring_ArrearsAcct %] < 4 = 4,
If( Arrears[TCMRScoring_ArrearsAcct %] < 5 = 3,
If( Arrears[TCMRScoring_ArrearsAcct %] < 6 = 2, 1
)
)
)
)
The difference with your function being that you tried to use OR ( || ) instead of inputting a new If-function as the FALSE result of the previous If-function.
As vcastello mentioned, you should wrap Arrears[TCMRScoring_ArrearsAcct %], as the above will now give an error if there are multiple values for Arrears[TCMRScoring_ArrearsAcct %] in the current filter context. So for example, you could test a Min(Arrears[TCMRScoring_ArrearsAcct %]) to ensure the maximum 'points' are awarded based on the smallest Arrears[TCMRScoring_ArrearsAcct %] in the current context. The nested if would then look something like this:
If( Min( Arrears[TCMRScoring_ArrearsAcct %] ) < 3, 5,
If( Min( Arrears[TCMRScoring_ArrearsAcct %] ) < 4, 4,
If( Min( Arrears[TCMRScoring_ArrearsAcct %] ) < 5, 3,
If( Min( Arrears[TCMRScoring_ArrearsAcct %] ) < 6, 2, 1
)
)
)
)
You can replace the Min() function with whatever function you actually need for your specific problem, but some way to handle the possibility of multiple values for Arrears[TCMRScoring_ArrearsAcct %] in your current filter context is necessary.