IFS Function in Google Sheets
Evaluates multiple conditions in order and returns the value associated with the first TRUE condition. The clean replacement for nested IFs when you have 3 or more cases.
Syntax
IFS(condition1, value1, [condition2, value2, ...])Returns: The value associated with the first TRUE condition, or #N/A if all conditions are FALSE.
Excel equivalent: IFS (identical, requires Excel 2019+ or Microsoft 365)
Introduced: 2018
Parameters
| Name | Required | Description |
|---|---|---|
| condition1, condition2, ... | Required | Conditions to check, in order. The first one that evaluates to TRUE determines the result. |
| value1, value2, ... | Required | The value to return when the corresponding condition is TRUE. |
Examples
Letter grades from a score
=IFS(B2 >= 90, "A", B2 >= 80, "B", B2 >= 70, "C", B2 >= 60, "D", TRUE, "F")Each condition is evaluated in order. The TRUE at the end acts as a catch-all "else" — pairs with "F" so any score below 60 returns F instead of #N/A.
Bucket revenue by size
=IFS(A2 >= 1000000, "Enterprise", A2 >= 100000, "Mid-market", A2 >= 10000, "SMB", TRUE, "Micro")Classify customers by revenue band. The order matters — IFS stops at the first TRUE, so always order conditions from most restrictive to least restrictive.
Status by sentinel values
=IFS(C2="", "Not started", C2="WIP", "In progress", C2="DONE", "Complete")Returns #N/A if none of the sentinels match. Add `TRUE, "Unknown"` at the end to provide a default.
When to use an alternative
- SWITCH — All your conditions compare the same expression against different fixed values.
- IF (nested) — You only have 2 cases — IFS is overkill.
- VLOOKUP / XLOOKUP against a thresholds table — Your bucketing logic might change — keep the thresholds in cells you can edit.
Common errors and how to fix them
#N/A returned
Cause: None of the conditions evaluated to TRUE and no default was provided.
Fix: Add `TRUE, "<default value>"` as the last condition/value pair.
Wrong bucket returned
Cause: Conditions ordered from least to most restrictive — IFS stops at the first TRUE.
Fix: Reorder so the most restrictive condition (e.g., highest threshold) comes first.
Related functions
Frequently Asked Questions
Does IFS short-circuit like programming language if/else?
Yes. IFS evaluates conditions left to right and returns the value paired with the first TRUE condition. Conditions after that one are not evaluated, which matters when your conditions have side effects (rare but possible with volatile functions).
How do I add a default "else" clause to IFS?
Use `TRUE` as the final condition. Because TRUE is always TRUE, it acts as the catch-all when no earlier condition matched: `IFS(A>10, "big", A>5, "medium", TRUE, "small")`.