Excel Date Difference Calculator
Calculate days between dates with Excel formulas – includes weekends, workdays, and custom date ranges
Complete Guide: How to Calculate Days Between Dates in Excel
Calculating the number of days between two dates is one of the most common tasks in Excel, whether you’re tracking project timelines, calculating employee tenure, or analyzing financial periods. This comprehensive guide will walk you through all the methods to calculate date differences in Excel, including handling weekends, holidays, and custom date ranges.
Basic Date Difference Calculation
The simplest way to calculate days between dates is by subtracting one date from another. Excel stores dates as serial numbers (with January 1, 1900 as day 1), so basic arithmetic works perfectly:
- Enter your start date in cell A1 (e.g., 1/15/2023)
- Enter your end date in cell B1 (e.g., 2/20/2023)
- In cell C1, enter the formula:
=B1-A1 - Format cell C1 as “General” or “Number” to see the result as days
Pro Tip:
Excel’s default date format may display dates differently based on your system settings. Always verify your dates appear correctly before performing calculations.
Using the DATEDIF Function
The DATEDIF function is Excel’s dedicated date difference function, though it’s not well-documented. The syntax is:
=DATEDIF(start_date, end_date, unit)
Where unit can be:
"d"– Days between dates"m"– Complete months between dates"y"– Complete years between dates"ym"– Months between dates after complete years"yd"– Days between dates after complete years"md"– Days between dates after complete months and years
Example: =DATEDIF(A1, B1, "d") returns the same result as =B1-A1 but is more explicit.
Calculating Workdays Only (Excluding Weekends)
For business calculations where weekends shouldn’t count, use the NETWORKDAYS function:
=NETWORKDAYS(start_date, end_date, [holidays])
Example: =NETWORKDAYS(A1, B1) returns the number of workdays between two dates, automatically excluding Saturdays and Sundays.
To exclude specific holidays, create a range with holiday dates and reference it:
=NETWORKDAYS(A1, B1, D1:D10)
Where D1:D10 contains your holiday dates.
Custom Weekday Calculations
If your workweek isn’t Monday-Friday, you’ll need a more advanced approach. The NETWORKDAYS.INTL function (available in Excel 2010 and later) lets you specify which days are weekends:
=NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays])
The weekend parameter can be:
1– Saturday, Sunday (default)2– Sunday, Monday3– Monday, Tuesday4– Tuesday, Wednesday5– Wednesday, Thursday6– Thursday, Friday7– Friday, Saturday11– Sunday only12– Monday only13– Tuesday only14– Wednesday only15– Thursday only16– Friday only17– Saturday only
Example for a Tuesday-Saturday workweek: =NETWORKDAYS.INTL(A1, B1, 4)
Handling Holidays in Date Calculations
When calculating business days, you’ll often need to exclude holidays. There are several approaches:
-
Using NETWORKDAYS with a holiday range:
=NETWORKDAYS(A1, B1, Holidays!A2:A20)Where Holidays!A2:A20 contains your list of holiday dates.
-
Creating a dynamic holiday list:
For recurring holidays (like “every July 4th”), use:
=NETWORKDAYS(A1, B1, DATE(YEAR(A1),7,4)) -
Using conditional formatting:
Highlight holidays in your date range using conditional formatting rules.
Advanced Date Calculations
For more complex scenarios, you might need to combine multiple functions:
| Scenario | Formula | Example |
|---|---|---|
| Days between dates excluding specific weekdays and holidays | =NETWORKDAYS.INTL(A1,B1,weekend_number,Holidays) |
=NETWORKDAYS.INTL(A1,B1,11,Holidays!A2:A10)(Excludes Sundays and holidays) |
| Years, months, and days between dates | =DATEDIF(A1,B1,"y") & " years, " & DATEDIF(A1,B1,"ym") & " months, " & DATEDIF(A1,B1,"md") & " days" |
For 1/15/2020 to 3/20/2023: “3 years, 2 months, 5 days” |
| Percentage of time between dates | =(B1-A1)/365(For years) or =(B1-A1)/30.44(For months) |
=TEXT((B1-A1)/365,"0.0%") → “8.2%” for 30 days |
| Age calculation (years, months, days) | =INT(YEARFRAC(A1,B1,1)) & " years, " & MOD(INT(MONTHFRAC(A1,B1)*12),12) & " months, " & INT(B1-DATE(YEAR(B1),MONTH(B1)-MOD(INT(MONTHFRAC(A1,B1)*12),12),DAY(A1))) & " days" |
For birthdate 5/15/1985 and today: “38 years, 2 months, 10 days” |
Common Errors and Troubleshooting
Date calculations can go wrong for several reasons. Here are the most common issues and solutions:
-
#VALUE! error:
- Cause: One or both cells don’t contain valid dates
- Solution: Verify cell formatting (should be “Date”) and check for text entries
-
Negative numbers:
- Cause: End date is before start date
- Solution: Use
=ABS(B1-A1)or swap the dates
-
Incorrect holiday exclusion:
- Cause: Holiday dates aren’t in chronological order or contain invalid dates
- Solution: Sort your holiday list and verify all entries are valid dates
-
Leap year issues:
- Cause: February 29 in non-leap years
- Solution: Use
DATEfunction to create valid dates:=DATE(2023,2,29)will automatically adjust to 3/1/2023
-
Time components affecting results:
- Cause: Dates include time values (e.g., 1/1/2023 12:00 PM)
- Solution: Use
=INT(B1-A1)to ignore time components
Excel vs. Google Sheets Date Functions
While Excel and Google Sheets share many date functions, there are some important differences:
| Function | Excel | Google Sheets | Notes |
|---|---|---|---|
| Basic date difference | =B1-A1 |
=B1-A1 |
Identical syntax |
| DATEDIF | =DATEDIF(A1,B1,"d") |
=DATEDIF(A1,B1,"d") |
Identical syntax, though Google Sheets documents it better |
| NETWORKDAYS | =NETWORKDAYS(A1,B1) |
=NETWORKDAYS(A1,B1) |
Identical syntax |
| NETWORKDAYS.INTL | =NETWORKDAYS.INTL(A1,B1,1) |
=NETWORKDAYS.INTL(A1,B1,1) |
Identical syntax |
| WORKDAY | =WORKDAY(A1,5) |
=WORKDAY(A1,5) |
Identical syntax |
| WORKDAY.INTL | =WORKDAY.INTL(A1,5,1) |
=WORKDAY.INTL(A1,5,1) |
Identical syntax |
| YEARFRAC | =YEARFRAC(A1,B1,1) |
=YEARFRAC(A1,B1,1) |
Google Sheets has additional basis options (6-14) |
| Date serial number | 1 = 1/1/1900 (Windows) 1 = 1/1/1904 (Mac) |
1 = 12/30/1899 | Google Sheets uses a different date system |
Best Practices for Date Calculations
-
Always verify date formats:
Use
=ISNUMBER(A1)to check if a cell contains a valid date (returns TRUE for dates, FALSE for text). -
Use named ranges for holidays:
Create a named range (e.g., “Holidays”) for your holiday list to make formulas more readable:
=NETWORKDAYS(A1,B1,Holidays) -
Document your assumptions:
Add comments to your worksheet explaining:
- Which days are considered weekends
- How holidays are handled
- Whether the calculation is inclusive or exclusive of the end date
-
Handle edge cases:
Account for:
- Same start and end dates
- End date before start date
- Invalid dates (like February 30)
-
Consider time zones:
If working with international dates, use UTC dates or clearly document the time zone.
-
Use helper columns:
For complex calculations, break them into steps in helper columns rather than nesting multiple functions.
-
Test with known values:
Verify your formulas with dates where you know the expected result (e.g., 1/1/2023 to 1/31/2023 should be 30 days).
Real-World Applications
Date difference calculations have numerous practical applications:
-
Project Management:
- Calculating project durations
- Tracking milestones and deadlines
- Creating Gantt charts
-
Human Resources:
- Calculating employee tenure
- Tracking vacation accrual
- Managing probation periods
-
Finance:
- Calculating interest periods
- Determining payment due dates
- Analyzing financial quarters
-
Manufacturing:
- Tracking production cycles
- Calculating lead times
- Managing inventory turnover
-
Education:
- Calculating semester lengths
- Tracking student attendance
- Managing assignment deadlines
-
Healthcare:
- Tracking patient recovery times
- Managing appointment schedules
- Calculating medication durations
Automating Date Calculations with VBA
For repetitive date calculations, consider using VBA macros. Here’s a simple example to calculate workdays between dates in a selected range:
Sub CalculateWorkdays()
Dim rng As Range
Dim cell As Range
Dim startDate As Range
Dim endDate As Range
Dim resultCell As Range
Dim holidays As Range
' Set your holiday range here
Set holidays = Worksheets("Holidays").Range("A2:A20")
' Get selected range (should be 3 columns: start, end, result)
Set rng = Selection
' Check if selection is valid
If rng.Columns.Count <> 3 Then
MsgBox "Please select a range with 3 columns (Start Date, End Date, Result)"
Exit Sub
End If
' Loop through each row
For Each cell In rng.Rows
Set startDate = cell.Columns(1)
Set endDate = cell.Columns(2)
Set resultCell = cell.Columns(3)
' Calculate workdays
If IsDate(startDate.Value) And IsDate(endDate.Value) Then
resultCell.Value = Application.WorksheetFunction.NetWorkdays(startDate.Value, endDate.Value, holidays)
resultCell.NumberFormat = "0"
Else
resultCell.Value = "Invalid Date"
End If
Next cell
End Sub
To use this macro:
- Press
Alt+F11to open the VBA editor - Insert a new module (
Insert > Module) - Paste the code above
- Select your date range (3 columns: start dates, end dates, empty column for results)
- Run the macro (
F5orRun > Run Sub/UserForm)
Alternative Methods Without Excel
If you don’t have Excel, here are alternative ways to calculate date differences:
-
Google Sheets:
Uses nearly identical functions to Excel. The main difference is the date serial number system.
-
Python:
from datetime import date start = date(2023, 1, 15) end = date(2023, 2, 20) delta = end - start print(delta.days) # Output: 36 -
JavaScript:
const start = new Date('2023-01-15'); const end = new Date('2023-02-20'); const diffTime = Math.abs(end - start); const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); console.log(diffDays); // Output: 36 -
SQL:
SELECT DATEDIFF(day, '2023-01-15', '2023-02-20') AS DaysBetween; -- Output: 36 -
Online calculators:
Numerous free online tools can calculate date differences, though they may not handle complex scenarios like custom weekends or holidays.
Frequently Asked Questions
-
Why does Excel show ###### instead of my date?
This typically means the column isn’t wide enough to display the date. Widen the column or change the date format to a shorter style.
-
How do I calculate the number of months between dates?
Use
=DATEDIF(A1,B1,"m")for complete months or=YEARFRAC(A1,B1,1)*12for precise decimal months. -
Can I calculate business hours between dates?
Yes, but it requires a more complex formula combining date and time functions. You would typically:
- Calculate total hours between dates
- Subtract non-working hours (evenings, weekends)
- Subtract holiday hours
Example:
=MAX(0,(NETWORKDAYS(A1,B1)-1)*("EndTime"-"StartTime")+IF(NETWORKDAYS(B1,B1),MEDIAN(MOD(B1,1),EndTime,StartTime)-MEDIAN(MOD(B1,1),EndTime,StartTime),0)-IF(NETWORKDAYS(A1,A1),MEDIAN(MOD(A1,1),EndTime,StartTime)-MEDIAN(MOD(A1,1),EndTime,StartTime),0)) -
How do I handle dates before 1900 in Excel?
Excel for Windows doesn’t support dates before January 1, 1900. For historical dates:
- Use text representations
- Store as Julian dates
- Use a different system like Python or SQL
-
Why is my NETWORKDAYS result different from manual counting?
Common reasons include:
- Incorrect holiday list (check for duplicates or invalid dates)
- Time components in your dates (use
=INT()to remove) - Different weekend definitions (verify your weekend parameter)
-
How do I calculate the number of weekdays in a month?
Use:
=NETWORKDAYS(DATE(YEAR,Month,1),EOMONTH(DATE(YEAR,Month,1),0))Replace YEAR and Month with your values, or cell references.
-
Can I calculate date differences in Excel Online?
Yes, Excel Online supports all the date functions mentioned in this guide, though some advanced features may require the desktop version.
Conclusion
Mastering date calculations in Excel opens up powerful possibilities for data analysis, project management, and financial modeling. Whether you need simple day counts or complex business day calculations with custom weekends and holidays, Excel provides the tools to handle virtually any date-related scenario.
Remember these key points:
- Always verify your date formats before calculations
- Use
NETWORKDAYSfor business day calculations - Document your assumptions about weekends and holidays
- Test your formulas with known date ranges
- Consider using helper columns for complex calculations
- For repetitive tasks, explore VBA automation
By applying the techniques in this guide, you’ll be able to handle any date difference calculation Excel throws at you, from simple day counts to sophisticated business day analyses with custom weekends and holiday schedules.