The IFS function in Excel
IFS replaces chains of nested IFs. You list pairs of "condition, result"; Excel checks them from left to right and returns the result of the first true condition.
Available in Excel 2019 and newer. If no condition is true, it returns #N/A, so finish with TRUE as a catch-all.
Syntax
=IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2], …)
| Argument | What it means |
|---|---|
| logical_test1 | The first condition, e.g. B2>=90. |
| value_if_true1 | What to return if it's true. |
| logical_test2, value_if_true2, …optional | More pairs, checked in order. Up to 127. |
Examples
1. Grades from a score
| A | B | C | |
|---|---|---|---|
| 1 | Student | Score | Grade |
| 2 | Noa | 84 | B |
84 isn't ≥ 90, but it is ≥ 75, so the result is "B". The checks after the first true one don't matter.
2. The catch-all at the end
| A | B | C | |
|---|---|---|---|
| 1 | Student | Score | Grade |
| 2 | Liam | 38 | F |
None of the score bands matched, so the final TRUE returns "F" instead of #N/A.
3. Shipping tiers
| A | B | |
|---|---|---|
| 1 | Order total | 64 |
| 2 | Shipping | 4.99 |
Free from 100, reduced from 50, full price below that.
Common mistakes
#N/A error. No condition was true and there's no catch-all.
Fix: End with TRUE and a default value.
Conditions in the wrong order. Checking B2>=50 first gives "C" to everyone above 50.
Fix: Start with the strictest condition.
Frequently asked questions
IFS or a lookup table?
For a few fixed bands IFS is fine. When the bands change often, keep them in a table and use XLOOKUP or VLOOKUP with an approximate match.