How to Workdays Per Month in Excel

Learn multiple Excel methods to calculate workdays per month with step-by-step examples, business scenarios, and practical tips.

excelformulaspreadsheettutorial
11 min read • Last updated: 7/2/2025

How to Workdays Per Month in Excel

Why This Task Matters in Excel

Calculating the exact number of workdays in a month is a deceptively common requirement that cuts across finance, operations, human resources, and project management. Payroll specialists need an accurate count of payable days to prorate salaries for new hires and departures. Accounts payable teams allocate rent, utilities, and insurance costs based on working days to avoid overstating expenses. Project managers assess capacity by multiplying team size by available workdays, while production planners schedule machine maintenance on non-workdays to minimize downtime.

In most Western business calendars, a “workday” means Monday through Friday excluding holidays, but different regions follow unique calendars. Miscounting even a single day can distort cost allocations, capacity planning, overtime budgeting, and delivery promises. Excel remains the go-to tool because it combines calendaring functions, date arithmetic, and table filtering in one place without requiring specialized planning software. With the proper formulas, you can build dynamic models that automatically adjust when the month changes, holidays are added, or company policy designates alternate weekends.

Mastering the workdays-per-month calculation also cements other critical Excel skills: manipulating serial dates, referencing complete calendar tables, writing robust logical tests, and employing array-enabled functions such as NETWORKDAYS.INTL. Once you understand these techniques, extending them to weekly, quarterly, or custom fiscal periods is straightforward. Conversely, failing to grasp them often leads to manual counts, hard-coded numbers, and spreadsheets that break as soon as the calendar rolls over—an operational risk few organizations can afford.

Best Excel Approach

The most dependable way to determine workdays in any month is to pair NETWORKDAYS (or NETWORKDAYS.INTL for custom weekends) with the EOMONTH function. EOMONTH anchors the period, while NETWORKDAYS tallies weekdays minus holidays.

Why this approach stands out:

  • It updates dynamically when the input month changes.
  • It supports an optional holiday list so official non-working days are automatically excluded.
  • NETWORKDAYS.INTL allows you to define any weekend pattern (e.g., Friday-Saturday in many Middle-Eastern countries).
  • The solution is cell-based—no macro security warnings, no Power Query refresh delays, and full backward compatibility to Excel 2007 for NETWORKDAYS.

Recommended syntax (standard Monday-Friday workweek):

=NETWORKDAYS(EOMONTH(A1,-1)+1, EOMONTH(A1,0), $H$2:$H$20)

Where:

  • A1 holds any date in the target month (01-Jan-2025, 15-Jan-2025, etc.).
  • $H$2:$H$20 is an optional holiday list.
  • EOMONTH(A1,-1)+1 returns the first calendar day of that month.
  • EOMONTH(A1,0) returns the last calendar day of the same month.

Alternative for custom weekends (e.g., weekend = Friday & Saturday):

=NETWORKDAYS.INTL(EOMONTH(A1,-1)+1, EOMONTH(A1,0), "0000110", $H$2:$H$20)

In the weekend code string, “1” flags non-workdays starting from Monday (left) to Sunday (right)—so \"0000110\" marks Friday and Saturday as weekend.

Parameters and Inputs

To use the formulas effectively, gather these inputs:

  1. Anchor date (required) – Any valid Excel date inside the target month. Use a date picker, dropdown, or a cell that concatenates year and month text. Ensure the cell is formatted as a date; NETWORKDAYS works with serial numbers, not text.
  2. Holiday range (optional but recommended) – A single-column list of dates, formatted as true dates. Wrap the reference in absolute addresses [H2:H20] so copies of the formula will always point to the same list.
  3. Weekend pattern (optional) – For NETWORKDAYS.INTL only. Provide either a 7-character text string or a weekend number (1 through 17). Choose the pattern that matches company policy.
  4. Data validation – Prevent blank or text strings in the anchor date cell. A simple ISNUMBER check or a date-picker control avoids errors.
  5. Edge cases – Leap years (February 29), months starting on Sunday or Saturday, and months with all holidays on weekdays. The formula inherently handles these, but the holiday list must include the correct leap-year holiday date.

Step-by-Step Examples

Example 1: Basic Scenario

Imagine you want to populate a rolling 12-month dashboard that always displays the workdays in the current month. Place today’s date in cell B1 with the formula:

=TODAY()
  1. In B2 enter the core formula:
=NETWORKDAYS(EOMONTH(B1,-1)+1, EOMONTH(B1,0))
  1. Format B2 as General so you see a number, for example 22 if the current month is October 2024 (with no holidays).
  2. Change your system date or overwrite B1 with 15-Feb-2025. B2 now returns 20 because February 2025 has 20 weekdays.
  3. Add a holiday list in [F2:F5] containing 17-Feb-2025 (Presidents’ Day in the USA). Modify B2:
=NETWORKDAYS(EOMONTH(B1,-1)+1, EOMONTH(B1,0), $F$2:$F$5)

The result drops to 19, demonstrating immediate holiday exclusion.

Why it works: EOMONTH isolates the first and last calendar dates. NETWORKDAYS counts Mon-Fri, subtracts the single holiday, and returns a scalar number. This makes the dashboard fully self-healing—no manual edits required next month.

Troubleshooting tips:

  • If B2 shows “#VALUE!”, confirm B1 is a true date.
  • If holidays are not excluded, verify they are formatted as dates, not text. Click each cell—Excel should show the serial number in the Formula Bar.
  • For users outside the United States, adjust system locale or explicitly format the cell as Date (14-Mar-2001) to prevent misinterpretation.

Example 2: Real-World Application

Scenario: A consulting firm needs to bill clients for dedicated analyst time. The monthly invoice multiplies day rate by actual workdays in the month, minus federal holidays and client-specific off-days. They also employ in Dubai, using a Friday-Saturday weekend.

Data setup:

  • Sheet \"Calendar\" columns A:B list SerialDate and HolidayName. Range [Calendar!A2:A50] contains global holidays.
  • Sheet \"Dashboard\" column A lists 12 months starting with 01-Jan-2025. Column B will show workdays for the US team; column C for Dubai.

Steps for US team:

  1. In B2 enter:
=NETWORKDAYS(EOMONTH($A2,-1)+1, EOMONTH($A2,0), Calendar!$A$2:$A$50)
  1. Drag down through B13. Each row immediately displays the correct count, e.g., 21 workdays in March 2025.

Steps for Dubai team:

  1. In C2 enter:
=NETWORKDAYS.INTL(EOMONTH($A2,-1)+1, EOMONTH($A2,0), "0000110", Calendar!$A$2:$A$50)
  1. Drag down to C13. March 2025 displays 23 because Sunday becomes a workday, Friday/Saturday are weekend, and local holidays overlap differently.

Integration with invoicing:

  • The billing worksheet references Dashboard!B:B or C:C to compute invoice totals automatically.
  • Any future holiday addition on Calendar sheet cascades instantly through the model.
  • Excel Table feature can convert Calendar list into an official Table. NETWORKDAYS accepts structured references, delivering extra clarity.

Performance considerations:

  • NETWORKDAYS functions are lightweight. Even with thousands of rows, recalculation is negligible.
  • Storing the holiday list in a dedicated Table ensures efficient memory use and facilitates slicers for holiday categories.

Example 3: Advanced Technique

Objective: Produce a dynamic monthly summary that lists every working day in the month alongside its weekday name, skipping holidays and weekends.

Prerequisites: Microsoft 365 or Excel 2021 to leverage spill arrays and LET for clarity.

  1. Place anchor date in G1 (e.g., 07-Apr-2025).
  2. Holiday list resides in [J2:J20].
  3. In G3 enter the array formula:
=LET(
 startDate, EOMONTH(G1,-1)+1,
 endDate, EOMONTH(G1,0),
 allDays, SEQUENCE(endDate-startDate+1, , startDate),
 workdays, FILTER(allDays, NETWORKDAYS(allDays, allDays, J2:J20)=1),
 CHOOSE({1,2},
  TEXT(workdays, "ddd dd-mmm"),
  TEXT(workdays, "dddd"))
)

Explanation:

  • SEQUENCE generates every calendar day of the month.
  • NETWORKDAYS called with identical start and end counts whether a single date is a workday (returns 1) or not (returns 0).
  • FILTER removes non-workdays and holidays.
  • CHOOSE constructs a two-column spill: column 1 short name and date, column 2 full weekday name.

Edge case management:

  • If the month has no workdays (rare but possible due to company-wide shutdown), FILTER returns a #CALC! error. Wrap in IFERROR to display a friendly message:
    =IFERROR(previous_formula,"No workdays in period")
    

Optimization tips:

  • Using LET avoids recomputing EOMONTH multiple times.
  • Because NETWORKDAYS operates on array inputs, Excel calculates in one vectorized loop—faster than row-by-row evaluation.

When to use: Generate checklists, attendance registers, or machine run-schedules without VBA. The spill output updates dynamically when you change G1 or expand the holiday list.

Tips and Best Practices

  1. Lock holiday ranges with absolute references [$H$2:$H$20] to prevent accidental offsets when copying formulas sideways.
  2. Store holidays in an Excel Table named Holidays. Then your formula reads Holidays[Date], improving readability and auto-expanding when you add new dates.
  3. For global companies, maintain a separate holiday list per region and pass the correct reference via INDIRECT or switchable named ranges to avoid duplicating formulas.
  4. Use NETWORKDAYS.INTL weekend codes instead of nested IFs—this keeps one formula portable across any country’s workweek.
  5. Combine workday counts with conditional formatting to highlight months with fewer than 20 workdays, triggering staffing reviews early.
  6. Document assumptions (weekend pattern, holiday list source) in a hidden “Notes” sheet so future users understand the logic and can update it safely.

Common Mistakes to Avoid

  1. Treating holidays as text – If you import holidays from CSV, they may appear as \"2025-12-25\" strings. NETWORKDAYS silently ignores them, inflating your count. Convert with DATEVALUE or multiply by 1 to ensure numeric dates.
  2. Forgetting absolute references – Copying a formula down without locking the holiday range can shift it to [H3:H21], omitting or misaligning holidays. Use F4 to anchor.
  3. Using the wrong weekend code – A single digit error in \"0000110\" could mark Thursday as weekend, removing four extra days each month. Always test with a small sequence to confirm.
  4. Hard-coding month start and end – Typing 1-Apr-2025 and 30-Apr-2025 into NETWORKDAYS forces you to edit 12 formulas annually. EOMONTH eliminates that maintenance overhead.
  5. Neglecting leap years – Manually listing February end dates can lead to 28-day assumptions. EOMONTH handles leap years automatically; avoid static 28-day references.

Alternative Methods

Below is a comparison of three approaches:

MethodKey FormulaProsCons
NETWORKDAYS + EOMONTH`=NETWORKDAYS(`first,last,holidays)Simple, backward compatible, fastFixed Mon-Fri weekend
NETWORKDAYS.INTL + EOMONTH=NETWORKDAYS.INTL(first,last,pattern,holidays)Custom weekends, handles odd schedulesIntroduced in 2010, older versions lack it
PivotTable with Date TableUse a calendar table, filter weekdays, countrowsNo formulas, drag-and-drop flexibilityRequires Power Pivot or manual refresh; heavier workbook

Choose NETWORKDAYS when your company follows the standard weekday schedule and you require broad version support. Opt for NETWORKDAYS.INTL for custom weekends. PivotTables suit analysts preferring visual summaries or needing to slice by multiple attributes (e.g., country, project). Performance differences are minimal up to tens of thousands of rows, but formulas recalculate instantly, whereas PivotTables require manual or automatic refresh cycles.

FAQ

When should I use this approach?

Use these formulas whenever you need a repeatable, transparent way to determine working days for payroll, project capacity, or cost allocations. They excel in schedules that change month-to-month or where adding holidays dynamically is crucial.

Can this work across multiple sheets?

Yes. Place the holiday list on a dedicated sheet and reference it with an absolute address or a named range. The start and end dates can live on yet another sheet—Excel cross-references seamlessly, provided the workbook is open.

What are the limitations?

NETWORKDAYS assumes the Excel date system, so dates before 1900 or negative serials do not work. It also lacks native half-day support (e.g., Christmas Eve half-day). Model partial days using fractions or additional logic.

How do I handle errors?

If you anticipate empty anchor dates, wrap the formula in IF(ISBLANK(A1),\"\",formula). Use IFERROR to trap errors from misspelled sheet names or missing holiday tables. For weekend-code typos, test with a small date sequence to confirm the expected pattern.

Does this work in older Excel versions?

NETWORKDAYS exists in Excel 2003 and later. NETWORKDAYS.INTL requires Excel 2010 or later. For pre-2010 versions with non-standard weekends, build a custom UDF in VBA or use a helper column in a calendar table.

What about performance with large datasets?

Both NETWORKDAYS functions are highly optimized. In stress tests on 100,000 rows, recalculation finished in under one second on modern hardware. Store the holiday list once; each additional formula merely references the same array, minimizing memory overhead.

Conclusion

Accurately counting workdays per month is foundational in any time-driven analysis—from payroll to project planning. By combining NETWORKDAYS or NETWORKDAYS.INTL with EOMONTH, you gain a dynamic, maintenance-free formula that adapts to changing calendars, custom weekends, and evolving holiday lists. Master this task and you’ll enhance the reliability of budgets, schedules, and dashboards while sharpening your broader date-handling skills in Excel. Next, explore integrating these formulas with dynamic arrays or Power Query to create automated calendar tables that feed multiple models across your organization.

We use tracking cookies to understand how you use the product and help us improve it. Please accept cookies to help us improve.