IFS
Replace nested IF statements with clean, readable cascading logic.
IFS evaluates multiple condition-result pairs in order and returns the result of the first condition that's true. Use it for scoring systems, status evaluations, tiered pricing, or any scenario where you're checking multiple conditions in sequence.
How it works
IFS(condition1, result1, condition2, result2, ..., [default])condition1, condition2, ...- Logical tests evaluated in sequenceresult1, result2, ...- Values returned when the corresponding condition is true[default]- Optional fallback value if no conditions match
Basic example
Customer loyalty tiers
Assign tier labels based on total points earned:
IFS(
POINTS > 1000, "Gold",
POINTS > 500, "Silver",
POINTS > 100, "Bronze",
"New Member"
)This checks each threshold in order. A customer with 750 points matches the second condition (POINTS > 500) and gets "Silver". The final value "New Member" acts as the default for anyone under 100 points.
Tiered pricing
Volume discounts
Apply different discount rates based on quantity ordered:
DISCOUNTED_PRICE = IFS(
QUANTITY > 100, PRICE * 0.8,
QUANTITY > 50, PRICE * 0.9,
true, PRICE
)Orders of 101+ get 20% off, 51-100 get 10% off, anything else gets full price. Using true as the final condition creates a guaranteed fallback.
Use true as your last condition instead of a standalone default value when you want explicit condition-result pairs all the way through.
Grading systems
Letter grades from numeric scores
Convert test scores to letter grades:
IFS(
SCORE >= 90, "A",
SCORE >= 80, "B",
SCORE >= 70, "C",
SCORE >= 60, "D",
"F"
)The order matters: SCORE >= 90 is checked first. If a student has 95, they get "A" and the function stops — it never checks the other conditions.
Status evaluation
Order fulfillment workflow
Display order status based on multiple conditions:
IFS(
AND(SHIPPED = true, DELIVERED = true), "Delivered",
SHIPPED = true, "In Transit",
PAYMENT_CONFIRMED = true, "Processing",
"Awaiting Payment"
)This checks conditions from most complete to least complete, ensuring the most specific status is shown.
Common mistakes
Wrong order of conditions - Put more specific conditions first.
IFS(SCORE >= 70, "C", SCORE >= 90, "A")will give everyone above 70 a "C" because that's checked first.Overlapping ranges - Use
>=consistently in descending order orin ascending order to avoid gaps.Missing default - If no conditions match and there's no default, IFS returns FALSE. Always provide a fallback.
Odd number of arguments - Every condition needs a result.
IFS(A > 5, "Yes", B > 10)will error because B > 10 has no result.
When to use alternatives
Only 2 branches: Use IF instead of IFS for simple true/false logic
Looking up values: Use VLOOKUP or FINDIFS when matching exact values from a table
Complex nested logic: Break into separate variables first, then use IFS
Related functions
IF - Simple conditional logic
AND - Combine multiple conditions
OR - Match any of several conditions