Status Formula in Excel: Overdue, Due Soon or Done
By ExcelReady TeamUpdated 6 min read
The short answer
A status formula checks a task in order: done first, then overdue, then due soon. Use =IF(C2="Yes","Done",IF(B2<TODAY(),"Overdue",IF(B2-TODAY()<=7,"Due soon","On track"))), where B2 is the due date and C2 marks completed tasks. In Excel 2019 or later, IFS does the same with less nesting. Put the Done check first so finished tasks never show as overdue.
Key takeaways
- Check conditions in order: Done, then Overdue, then Due soon, then On track. IF and IFS stop at the first TRUE.
- B2<TODAY() means the due date has passed; B2-TODAY()<=7 means it's due within a week.
- A blank due date counts as 0, which looks overdue. Test for B2="" first.
- IFS needs Excel 2019 or Microsoft 365. End it with TRUE,"On track" as the catch-all.
- Use a fixed report date cell instead of TODAY() when the status must not change from day to day.
On this page+
A status formula in Excel turns a due date into a label like Done, Overdue, Due soon or On track, and updates itself every day. You build it with nested IF or IFS, comparing the due date with TODAY(). This guide builds one step by step for a task tracker, then handles the details that break real trackers: the order of the checks, blank dates, and a status that should not change overnight.
The status formula in Excel#
The formula checks each status in turn and returns the first one that fits. Here is a small task tracker. Assume today is 2 November 2026:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Task | Due date | Done? | Status |
| 2 | Supplier review | 6 Nov 2026 | Due soon | |
| 3 | Client report | 30 Oct 2026 | Overdue | |
| 4 | Draft budget | 28 Oct 2026 | Yes | Done |
| 5 | Audit prep | 9 Nov 2026 | Due soon | |
| 6 | Training plan | 20 Nov 2026 | On track |
In D2, type:
=IF(C2="Yes","Done",IF(B2<TODAY(),"Overdue",IF(B2-TODAY()<=7,"Due soon","On track")))Fill it down to D6 (Windows: Ctrl+D; Mac: ⌘D). Supplier review is due in 4 days, so it shows Due soon. Client report's date has passed, so it's Overdue. Draft budget is also past its date but marked Yes, so it shows Done.
TODAY() returns the current date and has no arguments. It recalculates whenever the workbook opens or changes, so the statuses move on by themselves. The TODAY function guide covers the details.
How the formula decides: order matters#
IF tests a condition and returns one value if it's TRUE and another if it's FALSE. A nested IF puts another IF in the FALSE slot, so the row moves to the next test only when the previous one failed. The IF function guide explains the three arguments.
| Step | Test | If TRUE | If FALSE |
|---|---|---|---|
| 1 | C2="Yes" | Done | go to step 2 |
| 2 | B2<TODAY() | Overdue | go to step 3 |
| 3 | B2-TODAY()<=7 | Due soon | On track |
The order is the logic. Put Done first, or finished tasks with past dates show as Overdue. Put Overdue before Due soon, because an overdue date also gives a negative number of days, which is less than 7. Step 3 only needs one test because step 2 has already removed the past dates.
Dates work in these tests because Excel stores each date as a whole number. B2-TODAY() is simply the number of days left: 4 for Supplier review. The guide on IF with dates goes deeper into date comparisons, and nested IF in Excel covers longer chains.
The same status formula with IFS#
IFS takes pairs of test and result and returns the result for the first TRUE test. It reads in a straight line, with no brackets piling up at the end:
=IFS(C2="Yes","Done",B2<TODAY(),"Overdue",B2-TODAY()<=7,"Due soon",TRUE,"On track")The final TRUE,"On track" is the catch-all. TRUE is always true, so any row that fails every earlier test lands there. Without it, those rows return #N/A. IFS needs Excel 2019 or Microsoft 365; use nested IF if the file goes to older versions. The IFS function guide and the article on the IFS function show more examples.
How to handle blank due dates#
An empty cell counts as 0 in a date test, and 0 is earlier than any real date. So a task with no due date shows Overdue. Add a check at the very start:
=IF(B2="","No date",IF(C2="Yes","Done",IF(B2<TODAY(),"Overdue",IF(B2-TODAY()<=7,"Due soon","On track"))))Now an empty date shows No date instead. If finished tasks may have no date, swap the first two checks so Done wins.
Add "Due today" and a days-left column#
To flag tasks due today separately, add one more test between Overdue and Due soon:
=IFS(C2="Yes","Done",B2<TODAY(),"Overdue",B2=TODAY(),"Due today",B2-TODAY()<=7,"Due soon",TRUE,"On track")A days-left column next to the status helps people sort by urgency. In E2, type =B2-TODAY() and format the cell as General or Number, not as a date. Supplier review shows 4, and Client report shows -3 (three days late). For working days only, use NETWORKDAYS; the guide on counting days until a deadline shows both.
Freeze the status on a report date#
TODAY() changes every day, so last week's report shows different statuses when you open it again. When the status must stay fixed, for example in a monthly report or a job test, type the report date in a cell such as G1 and use it instead:
=IFS(C2="Yes","Done",B2<$G$1,"Overdue",B2-$G$1<=7,"Due soon",TRUE,"On track")The $ signs keep the reference on G1 as you fill down.
Status from percent complete#
Not every tracker uses dates. If column E holds progress from 0% to 100%:
=IFS(E2=0,"Not started",E2<1,"In progress",TRUE,"Complete")0% shows Not started, anything above 0% and below 100% shows In progress, and 100% shows Complete. You can combine both ideas: use E2=1 as the Done check at the start of the date formula.
Colour each status with conditional formatting#
A coloured status is easier to scan than text. Select A2:D6, then go to Home > Conditional Formatting > New Rule > Use a formula to determine which cells to format and add one rule per status:
| Rule formula | Suggested fill |
|---|---|
=$D2="Overdue" | Light red |
=$D2="Due soon" | Light amber |
=$D2="Done" | Light green |
The $ before D keeps every cell in the row looking at the Status column, so the whole row changes colour. The guide on highlighting overdue dates shows how to colour dates directly, without a status column.
Practise it#
Status formulas combine three skills job tests love: IF logic, the order of conditions, and date maths. Practise nested IF and IFS in a live spreadsheet to build multi-outcome formulas, review the basics with the IF function lesson, and practise days between dates with TODAY. Each lesson checks your formula instantly. Then try the exercise on this page, which uses a fixed report date so the answer stays the same every day.
Try it yourself
This is a live spreadsheet. Type the formula in the green cell and press Enter.
Use the report date in E2 instead of TODAY(). Click D2 and type =IFS(C2="Yes","Done",B2<$E$2,"Overdue",B2-$E$2<=7,"Due soon",TRUE,"On track"), then press Enter.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Report date | |||||
| 2 | ||||||
| 3 | ||||||
| 4 | Yes | |||||
| 5 | ||||||
| 6 | ||||||
| 7 | ||||||
| 8 | ||||||
| 9 |
Tip: IFS checks each test in order and returns the result next to the first one that is TRUE. The due date is 4 days after the report date.
Practise this in a lesson
Frequently asked questions
How do I make a status formula in Excel?
Use nested IF to test each status in order, for example =IF(C2="Yes","Done",IF(B2<TODAY(),"Overdue","On track")). Each IF checks one condition and passes the row to the next IF if the condition is false.
How do I show Overdue in Excel if a date has passed?
Compare the due date with TODAY: =IF(B2<TODAY(),"Overdue",""). Excel stores dates as numbers, so an earlier date is a smaller number and the test is TRUE once the date has passed.
How do I show Due soon for dates in the next 7 days?
Subtract TODAY from the due date and compare with 7: =IF(AND(B2>=TODAY(),B2-TODAY()<=7),"Due soon",""). Inside a full status formula, the overdue check comes first, so B2-TODAY()<=7 is enough.
Why does my status formula say Overdue for blank dates?
Excel treats an empty cell as 0, which is the earliest possible date, so it is always before TODAY. Add a check at the start: =IF(B2="","No date", ...).
Should I use IF or IFS for a status formula?
IFS is easier to read when there are three or more statuses, but it needs Excel 2019 or Microsoft 365. Nested IF works in every version and gives the same result.