Excel Days Between Dates Calculator
Calculate the number of days between two dates with Excel formulas – includes weekends, workdays, and custom date ranges
12/25/2023
Calculation Results
Complete Guide: Excel Calculate Number of Days Between Two Dates Formula
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 teach you all the methods to calculate days between dates in Excel, including handling weekends, holidays, and creating dynamic date calculations.
Excel stores dates as serial numbers where January 1, 1900 is serial number 1. This allows Excel to perform calculations with dates just like numbers.
Basic Methods to Calculate Days Between Dates
Method 1: Simple Subtraction
The most straightforward way to calculate days between two dates is by simple subtraction:
- 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
This will return the number of days between the two dates. Excel automatically formats the result as a date if the cell is formatted as a date. To display it as a number:
- Right-click the cell with the result
- Select “Format Cells”
- Choose “Number” with 0 decimal places
Method 2: Using the DATEDIF Function
The DATEDIF function is specifically designed for date calculations:
=DATEDIF(start_date, end_date, "D")
Where:
start_dateis your beginning dateend_dateis your ending date"D"returns the number of complete days between the dates
DATEDIF is considered a “compatibility function” and doesn’t appear in Excel’s function library, but it still works in all modern versions of Excel.
Method 3: Using the DAYS Function (Excel 2013 and later)
For newer versions of Excel, the DAYS function provides a simple alternative:
=DAYS(end_date, start_date)
This function is more intuitive as it clearly shows the order of arguments (end date first, then start date).
Calculating Workdays (Excluding Weekends)
For business calculations where you need to exclude weekends, Excel provides the NETWORKDAYS function:
=NETWORKDAYS(start_date, end_date, [holidays])
Where:
start_dateandend_dateare your date range[holidays]is an optional range of dates to exclude (like company holidays)
Example: To calculate workdays between January 1, 2023 and January 31, 2023, excluding New Year’s Day (1/1/2023) and MLK Day (1/16/2023):
=NETWORKDAYS("1/1/2023", "1/31/2023", {"1/1/2023", "1/16/2023"})
NETWORKDAYS.INTL for Custom Weekends
If your weekend days aren’t Saturday and Sunday, use NETWORKDAYS.INTL:
=NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays])
The [weekend] argument can be:
- 1 – Saturday, Sunday (default)
- 2 – Sunday, Monday
- 3 – Monday, Tuesday
- …
- 11 – Sunday only
- 12 – Monday only
- 13 – Tuesday only
- 14 – Wednesday only
- 15 – Thursday only
- 16 – Friday only
- 17 – Saturday only
You can also create custom weekend patterns using a 7-digit string where 1 represents a weekend day and 0 represents a workday. For example, “0000011” would make Friday and Saturday the weekend.
Advanced Date Calculations
Calculating Years, Months, and Days Separately
The DATEDIF function can return different units:
=DATEDIF(start_date, end_date, "Y") // Complete years
=DATEDIF(start_date, end_date, "M") // Complete months
=DATEDIF(start_date, end_date, "D") // Complete days
=DATEDIF(start_date, end_date, "MD") // Days excluding months
=DATEDIF(start_date, end_date, "YM") // Months excluding years
=DATEDIF(start_date, end_date, "YD") // Days excluding years
To get a complete breakdown (e.g., “2 years, 3 months, 15 days”), combine these:
=DATEDIF(A1,B1,"Y") & " years, " & DATEDIF(A1,B1,"YM") & " months, " & DATEDIF(A1,B1,"MD") & " days"
Calculating Age from Birth Date
To calculate someone’s age from their birth date:
=DATEDIF(birth_date, TODAY(), "Y")
For a more precise age including months and days:
=DATEDIF(A1,TODAY(),"Y") & " years, " & DATEDIF(A1,TODAY(),"YM") & " months, " & DATEDIF(A1,TODAY(),"MD") & " days"
Calculating Due Dates
To calculate a due date by adding days to a start date:
=start_date + days_to_add
Or using the WORKDAY function to skip weekends:
=WORKDAY(start_date, days_to_add, [holidays])
Example: To calculate a due date 10 workdays from today, excluding holidays in range D1:D5:
=WORKDAY(TODAY(), 10, D1:D5)
Handling Holidays in Date Calculations
When calculating workdays, you’ll often need to exclude holidays. Here’s how to properly handle holidays:
Method 1: Using NETWORKDAYS with Holiday Range
Create a list of holidays in your worksheet (e.g., in cells D1:D10), then reference this range in your NETWORKDAYS function:
=NETWORKDAYS(A1, B1, D1:D10)
Method 2: Dynamic Holiday Lists
For holidays that change dates each year (like Thanksgiving in the US), you can create dynamic holiday calculations:
For US Thanksgiving (4th Thursday in November):
=DATE(year, 11, 1) + (28 - WEEKDAY(DATE(year, 11, 1), 2))
For Easter Sunday (using the Meeus/Jones/Butcher algorithm):
=DATE(year, 3, 1) + INT((19*(year MOD 19) + 24) MOD 30) + INT(2.625*(year MOD 4 + year/4 MOD 7 + 32*(year MOD 4 > 2) + 3*(year MOD 100 < 19) + 4*(year MOD 100 > 99)) MOD 7)
Method 3: Named Ranges for Holidays
For better organization, create a named range for your holidays:
- Select your holiday date range
- Go to Formulas > Define Name
- Enter a name like “CompanyHolidays”
- Use in your formula:
=NETWORKDAYS(A1, B1, CompanyHolidays)
Common Errors and Troubleshooting
| Error | Cause | Solution |
|---|---|---|
| #VALUE! | Non-date values in date cells | Ensure both arguments are valid dates or references to cells containing dates |
| #NUM! | Start date is after end date | Swap the dates or use ABS function: =ABS(B1-A1) |
| Incorrect day count | Dates stored as text | Use DATEVALUE to convert text to dates: =DATEVALUE("1/15/2023") |
| Negative numbers | End date is before start date | Use ABS function or check date order |
| #NAME? | Misspelled function name | Check function spelling (especially DATEDIF which won’t autocomplete) |
Date Format Issues
If your dates appear as numbers (like 44927 instead of 1/1/2023):
- Select the cell(s)
- Press Ctrl+1 (or right-click > Format Cells)
- Choose “Date” category and select your preferred format
If Excel isn’t recognizing your text as dates:
- Use the TEXT TO COLUMNS feature (Data > Text to Columns)
- Or use the DATEVALUE function:
=DATEVALUE("1/15/2023")
Practical Applications
Project Management
Calculate project durations excluding weekends and holidays:
=NETWORKDAYS(project_start, project_end, holidays)
Track remaining days until deadline:
=NETWORKDAYS(TODAY(), deadline, holidays)
Human Resources
Calculate employee tenure:
=DATEDIF(hire_date, TODAY(), "Y") & " years, " & DATEDIF(hire_date, TODAY(), "YM") & " months"
Calculate vacation accrual:
=NETWORKDAYS(hire_date, TODAY(), holidays) * (vacation_days_per_year/260)
Finance
Calculate loan periods:
=DAYS(end_date, start_date)/365 // Years
=DAYS(end_date, start_date)/30.44 // Months (average)
Calculate interest periods:
=YEARFRAC(start_date, end_date, basis)
Performance Considerations
When working with large datasets containing date calculations:
- Avoid volatile functions: TODAY() and NOW() recalculate every time Excel recalculates, which can slow down large workbooks. Consider using a static date or a manually-updated reference cell.
- Use helper columns: For complex calculations, break them into intermediate steps in helper columns rather than nesting multiple functions.
- Limit array formulas: While powerful, array formulas can be resource-intensive. Use them judiciously in large datasets.
- Consider Power Query: For very large date calculations (100,000+ rows), Power Query may offer better performance than worksheet functions.
Excel vs. Other Tools Comparison
| Feature | Excel | Google Sheets | Python (pandas) | JavaScript |
|---|---|---|---|---|
| Basic day calculation | =B1-A1 | =B1-A1 | (df[‘end’] – df[‘start’]).dt.days | Math.floor((end – start)/(1000*60*60*24)) |
| Workday calculation | =NETWORKDAYS() | =NETWORKDAYS() | np.busday_count() | Custom function needed |
| Holiday handling | Built-in | Built-in | Custom holiday lists | Custom arrays |
| Custom weekends | =NETWORKDAYS.INTL() | =NETWORKDAYS.INTL() | weekmask parameter | Custom logic |
| Year/month/day breakdown | =DATEDIF() | =DATEDIF() | dt.components | Manual calculation |
| Performance with large datasets | Good (with optimization) | Moderate | Excellent | Excellent |
| Learning curve | Low | Low | Moderate | Moderate |
Best Practices for Date Calculations
- Always use cell references: Instead of hardcoding dates in formulas, reference cells containing the dates. This makes your formulas more flexible and easier to update.
- Document your date formats: If sharing workbooks internationally, note which date format you’re using (MM/DD/YYYY vs DD/MM/YYYY) to avoid confusion.
- Use consistent date sources: When pulling dates from different systems, ensure they’re all in the same format before calculations.
- Validate your dates: Use ISNUMBER with DATEVALUE to check if text entries are valid dates:
=ISNUMBER(DATEVALUE(A1)) - Consider time zones: If working with international dates, be aware of time zone differences that might affect day counts.
- Use table references: Convert your data to Excel Tables (Ctrl+T) so your date ranges automatically expand as you add more data.
- Test edge cases: Always test your date calculations with:
- Same start and end dates
- Dates spanning month/year boundaries
- Dates before/after leap days
- Dates in different centuries
Advanced Techniques
Creating a Dynamic Date Calculator
Build an interactive date calculator with these steps:
- Create input cells for start date, end date, and parameters
- Use data validation for dropdown menus (e.g., calculation type)
- Create named ranges for holidays and parameters
- Build a results section with all possible outputs
- Add conditional formatting to highlight important results
Array Formulas for Multiple Date Ranges
Calculate days between multiple date pairs in one formula:
{=B1:B10-A1:A10}
(Enter with Ctrl+Shift+Enter in older Excel versions)
Power Query for Large Date Calculations
For datasets with millions of rows:
- Load your data into Power Query (Data > Get Data)
- Add a custom column with your date calculation
- Use Duration.Days([EndDate] – [StartDate]) for day counts
- Load the results back to Excel
VBA for Custom Date Functions
Create your own date functions with VBA:
Function DAYSBETWEEN(startDate As Date, endDate As Date, Optional includeWeekends As Boolean = True) As Long
If includeWeekends Then
DAYSBETWEEN = endDate - startDate
Else
' Custom weekend logic here
DAYSBETWEEN = Application.WorksheetFunction.NetWorkdays(startDate, endDate)
End If
End Function
Real-World Examples
Example 1: Contract Duration Calculator
Calculate business days remaining on contracts:
=NETWORKDAYS(TODAY(), contract_end, holidays) - IF(NETWORKDAYS(TODAY(), contract_end, holidays)<0, 0, NETWORKDAYS(TODAY(), contract_end, holidays))
Example 2: Employee Vacation Tracker
Calculate available vacation days:
=MIN(MAX_VACATION_DAYS, (NETWORKDAYS(hire_date, TODAY(), holidays) / 365) * VACATION_ACCRUAL_RATE)
Example 3: Project Timeline with Milestones
Calculate days between milestones:
=LET(
start, A2,
end, B2,
total, DAYS(end, start),
workdays, NETWORKDAYS(start, end, holidays),
CHOOSE(2, total, workdays)
)
Future-Proofing Your Date Calculations
To ensure your date calculations remain accurate:
- Use Excel's date functions: Rather than manual calculations that might break with date format changes.
- Document your assumptions: Note which days you consider weekends, how you handle holidays, etc.
- Test with future dates: Some date functions behave differently with dates after 2099 or before 1900.
- Consider leap years: Test your calculations with dates around February 29.
- Use ISO week numbers: For international compatibility, use ISOWEEKNUM() instead of WEEKNUM().
- Plan for time zones: If working with global data, consider using UTC dates or clearly documenting time zones.
Conclusion
Mastering date calculations in Excel opens up powerful possibilities for data analysis, project management, financial modeling, and more. The key functions to remember are:
DAYS()- Simple day count between datesDATEDIF()- Flexible date difference calculationsNETWORKDAYS()- Workday calculations excluding weekendsNETWORKDAYS.INTL()- Custom weekend patternsWORKDAY()- Calculate future/past workdaysYEARFRAC()- Fractional year calculations
By combining these functions with proper date formatting, holiday handling, and error checking, you can build robust date calculation systems that handle virtually any business requirement. Remember to always test your calculations with edge cases and document your assumptions for future reference.
The interactive calculator at the top of this page demonstrates these principles in action. Try different date ranges and calculation types to see how Excel handles various scenarios, and use the generated formulas in your own workbooks.