Calculating Net Present Value in Microsoft Excel

Microsoft Excel provides a native =NPV() function, but financial analysts frequently make one catastrophic mistake that produces invalid results: including Year 0 inside the function.

⚠️ The #1 Most Common Excel NPV Mistake

Excel's =NPV(rate, range) function assumes the very first number in the range happens at the end of Year 1, discounting it by (1 + r)1.

Because the initial investment (Year 0) occurs today at time zero, it must never be discounted! If you put Year 0 into the function, Excel mistakenly discounts your upfront cost.

The Correct Excel NPV Formula

Suppose your spreadsheet is laid out with:

  • Cell B1: Discount rate (e.g. 0.07 or 7%)
  • Cell B2: Initial investment as a negative number (e.g. -50000)
  • Cells B3:B7: Future cash flows for Years 1 through 5 (e.g. 12000, 15000, 18000, 20000, 22000)
=NPV(B1, B3:B7) + B2

If your initial outlay is entered as a positive number (e.g. $50,000 in cell B2), subtract it instead:

=NPV(B1, B3:B7) - B2

When to Use the =XNPV Function

The standard =NPV() function assumes that every cash flow occurs at perfectly equidistant annual intervals. However, real-world financial contracts and retirement disbursements occur on irregular calendar dates or monthly intervals.

To calculate precise NPV based on exact dates, use =XNPV:

=XNPV(discount_rate, values_range, dates_range)

Note: Unlike NPV, XNPV does include the Year 0 initial cash flow directly inside values_range, paired with the start date in dates_range.

Summary Comparison: =NPV vs =XNPV

Feature =NPV() =XNPV()
Cash Flow Timing Equally spaced annual periods Exact calendar dates (day-count accuracy)
Initial Year 0 Outlay Must be added OUTSIDE parentheses Included INSIDE values range
Best Used For Theoretical models & annual capital projects Pensions, bonds, and monthly buyout modeling
Try Our Instant Web-Based NPV Calculator →