The Date Formulas That Actually Run My Deadlines (Not Just Display Them)
Stop decorating your spreadsheet with dates that do nothing. These Google Sheets date formulas track deadlines, flag overdue items, and calculate turnaround time.
I had 14 overdue invoices last March and didn't know about a single one until a client called to ask why their payment hadn't been processed. The dates were right there in my spreadsheet — column F, formatted nicely, sorted ascending. They just weren't doing anything. They were decorations. A date in a cell is not a deadline system. It's a string of numbers that sits there quietly while your business catches fire.
Most of us treat dates like labels. We type them in, maybe sort by them once, and then scan the column with our eyes every morning like we're human calculators. That works when you have eight rows. It does not work when you have eighty, or when you're juggling client deliverables, renewal dates, follow-ups, and tax deadlines across three tabs. The fix isn't a project management app — it's making the dates you already have actually work for you.
TODAY() Is the Engine — Everything Else Is Just Math
If you only learn one date function in Google Sheets, make it TODAY(). It returns the current date, updates every time the sheet recalculates, and becomes the foundation for every useful deadline formula you'll ever write. On its own it's nothing — but combined with a due date column, it turns your spreadsheet from a static list into something that knows what day it is.
Here's the formula I put in every tracker I build. Assume your due date is in column D, starting at row 2:
That gives you the number of days until (or past) the due date. Positive means you have time. Zero means today. Negative means you're already late. I put this in a column called "Days Left" and format it as a plain number. That single column has saved me more grief than any app I've ever paid for.
The Overdue Flag: Stop Scanning, Start Filtering
A "Days Left" number is useful. But when you're scrolling through 60 rows at 7 AM, you need something louder. I add a column called "Status" (or sometimes "Flag") that auto-populates based on the date math. Here's the version I've landed on after trying about fifteen variations:
This gives you four states: overdue, due today, due within three days, and everything else. You can change that "3" to whatever buffer makes sense for your work — I use 3 for client deliverables, 7 for contract renewals, and 14 for anything involving government agencies (because nothing moves fast there).
The real power comes when you pair this with a filter view. Filter the Status column to show only "🔴 OVERDUE" and "🟡 TODAY" — that's your morning checklist. No scanning. No mental math. Just the things that need you right now.
DATEDIF: The Formula Google Doesn't Advertise (But You Need)
DATEDIF calculates the difference between two dates in days, months, or years. Google doesn't include it in their autocomplete suggestions, and it doesn't show up in the formula helper dropdown. It's an undocumented holdover from Lotus 1-2-3. But it works, and it's cleaner than subtracting dates manually when you need months or years.
I use the "M" version constantly for client relationships. How long has this client been active? When was their last review? Is this contract approaching its annual renewal? A column that says "11 months" next to a client's name is a lot more actionable than a start date of "2024-06-15" that requires you to do arithmetic in your head.
One gotcha: DATEDIF throws an error if the start date is after the end date. If you're using it with TODAY() and your dates might be in the future, wrap it in an IFERROR or add an IF check first:
The Turnaround Time Column (and Why It Matters More Than You Think)
Every freelancer, contractor, and small-team operator I know underestimates how long things actually take. We remember the fast jobs and forget the slow ones. A turnaround time column fixes that permanently. Once a task or project is complete, you calculate the actual elapsed time:
Where C2 is the start date and E2 is the completion date. Now at the bottom of that column, throw in an AVERAGE:
That number will humble you. When I first did this for my own project tracker, I learned my "5-day" deliverables were actually averaging 8.3 days. My quoting was based on vibes. The spreadsheet was based on data. I adjusted my timelines, started under-promising, and my client satisfaction scores went up within a quarter — not because I got faster, but because I got honest.
WORKDAY and NETWORKDAYS: When "5 Days" Doesn't Mean Saturday and Sunday
If you quote turnaround times in business days, you need WORKDAY and NETWORKDAYS. They skip weekends automatically, and you can even feed them a list of holidays.
WORKDAY calculates a future date by adding business days to a start date:
I use this to auto-fill due dates. Client signs on Monday, the due date auto-populates to the following Monday (5 business days), not Saturday. No more manually counting on my fingers and hoping I didn't include a holiday weekend.
NETWORKDAYS does the reverse — it counts the business days between two dates:
This is the more accurate version of your turnaround time column if your work happens Monday through Friday. A job that started on Thursday and finished the following Tuesday is 3 business days, not 5 calendar days. That distinction matters when you're pricing by the day or reporting capacity to a client.
Putting It Together: The Five-Column Deadline System
Here's the setup I use in every tracker, regardless of industry. I've used versions of this for client projects, invoice tracking, contract renewals, and even tracking when my kid's permission slips are due (same energy, honestly).
- Column: Start Date — When the task, project, or obligation began. Manual entry or auto-filled from a form.
- Column: Due Date — Either manually entered or calculated with =WORKDAY(Start, X). This is the promise.
- Column: Days Left — =IF(DueDate="", "", DueDate - TODAY()). This is the countdown.
- Column: Flag — The nested IF formula from earlier (OVERDUE / TODAY / SOON / OK). This is the alarm.
- Column: Completed — Date of completion. Manual entry. When filled, the turnaround formula kicks in.
Five columns. No apps. No integrations. No monthly subscription. Just dates that actually do something. You can layer conditional formatting on top of this (turn the row red when the flag says OVERDUE), add a dashboard tab that counts how many items are in each state, or build a chart that tracks your average turnaround over time. But the five columns are the foundation, and they work from day one.
The Recurring Deadline Problem (and the Ugly-but-Effective Fix)
One-off deadlines are easy. Recurring ones — monthly reports, quarterly reviews, annual renewals — are where most spreadsheet systems fall apart. There's no built-in "recurrence" feature in Google Sheets. You have two options, and I've used both.
Option 1: The Next Due Date formula. Instead of tracking every occurrence, you track the next one. When a recurring task is completed, the due date auto-advances:
This keeps your list short — one row per recurring obligation, always showing the next due date. The downside is you lose history. You can't look back and see when you actually completed the March report.
Option 2: The log approach. Every occurrence gets its own row. You pre-populate rows for the year (or quarter) using EDATE or SEQUENCE:
This gives you a full audit trail. I use Option 2 for anything a client or regulator might ask about later — compliance reports, insurance renewals, license applications. I use Option 1 for internal stuff like "send the team newsletter" where history doesn't matter.
Don't Forget the File That Goes With the Date
Here's the thing nobody talks about with deadline tracking: the date is only half the problem. The other half is the deliverable, receipt, signed contract, or report that's supposed to exist by that date. You can flag an overdue invoice all day long, but if you can't find the actual invoice PDF, the flag is just a more organized way to panic.
I spent years hyperlinking Drive files into cells next to due dates. It worked until someone moved a folder, or a client sent a new version and I forgot to update the link. Now I use FileFox to drag files directly into the row — the invoice PDF lives in the same row as the due date and the status flag. When the flag turns red, I don't have to go hunting. The file is right there. It's the kind of thing that sounds minor until you're on a call with a client and need the signed agreement in the next thirty seconds.
The One Thing to Do First
Open your most-used spreadsheet right now — the one with dates in it. Add a column next to the date column. Put this formula in the first data row:
Drag it down. Format as a number. Look at the negative numbers. Those are things that are already late, and you probably didn't know. That ten-second exercise is more useful than any app demo or workflow article — including this one. Once you see the negatives, you'll never go back to scanning dates with your eyes.
Frequently Asked Questions
How do I highlight overdue dates automatically in Google Sheets?
Select your due date column, go to Format → Conditional formatting, choose "Custom formula is" and enter =D2<TODAY(). Set the fill color to red. This will highlight any date that has already passed. For a multi-tier system (overdue, due soon, OK), add multiple rules with different date thresholds.
Why does my Google Sheets date subtraction show a date instead of a number?
Google Sheets sometimes auto-formats the result of date math as a date rather than a number. Select the cell or column, go to Format → Number → Number, and the result will display as a plain number (e.g., 5 or -3). This is the most common issue people hit when building deadline trackers.
Can Google Sheets calculate business days excluding weekends and holidays?
Yes. Use NETWORKDAYS(start_date, end_date) to count business days between two dates, or WORKDAY(start_date, num_days) to calculate a future date by adding business days. Both functions skip weekends by default and accept an optional range of holiday dates to exclude.
What is the DATEDIF function in Google Sheets and why doesn't it autocomplete?
DATEDIF calculates the difference between two dates in days ("D"), months ("M"), or years ("Y"). It's a legacy function from Lotus 1-2-3 that Google supports but doesn't officially document. It won't appear in autocomplete suggestions, but it works perfectly if you type it manually. Just make sure the start date is before the end date, or it will return an error.
How do I track recurring deadlines in Google Sheets without manually entering dates?
Use the EDATE function to advance a date by a set number of months (e.g., =EDATE(A2, 1) for monthly recurrence), or use SEQUENCE to pre-populate a column with evenly spaced dates for the year. For weekly recurrence, simple addition works: =A2+7. Combine with the overdue flag formula to automatically track which recurring items are due or late.