NPV Function

NPV (Net Present Value) is a formula function in Weissr cash-flow models. It tells you what a series of future yearly cash flows is worth today, using a discount rate you choose. NPV works in every model in both Capex Strategy and Capex Management, and you write it the same way you would in Excel.



What the NPV function does

NPV discounts each yearly value in a range back to today and adds the results together.

  • Each year column counts as one year.

  • The first year in the range is discounted one full year. Excel's NPV function works the same way.

📌 Note: NPV uses the rate you give it. It does not discount at WACC (Weighted Average Cost of Capital) or adjust for inflation on its own. To discount at WACC, point the rate to a row whose formula is =SYS_WACC.

How to write an NPV formula

=NPV(rate; range)

Part

What to enter

Example

=

Every formula starts with an equals sign.

rate

The discount rate, as a percentage, a decimal, or a single cell.

8%, 0.08, M3

range

The cells holding the cash flows, in one row, from the first year to the last.

$M5:P5

  • Separate the rate and the range with a semicolon (;).

  • 8% and 0.08 give the same result. Typing 8 means a rate of 800%.

  • You can see your formula in the grid and in the Formula builder side panel.

⚠️ Warning: NPV only uses the first range. Anything you add after it is ignored. To discount several rows, add separate NPV functions together, for example =NPV($M3;$M5:P5)+NPV($M3;$M8:P8).

How the result is calculated

Each cash flow is divided by (1 + rate), raised to its position in the range. The first year in the range is always position 1.

Example: at a rate of 10%, three yearly cash flows of 100 give:

Year in range

Cash flow

Divided by

Present value

1

100

1.10

90.91

2

100

1.21

82.64

3

100

1.331

75.13

NPV

248.69

Choosing the years in the range

Each year in the grid is shown with its column letter, for example 2026 (M). The first year column is always M. A $ before a column letter locks that end of the range to the start or end year of a period.

In the examples below, the rate is in row 3, the cash flows are in row 5, and Period 1 runs from column M to column V.

What you want

How to write it (in column P)

What each year shows

Value development over time

=NPV(M3;$M5:P5)

The NPV from the first year up to that year. The last year shows the NPV of the whole period.

One total for the period

=NPV($M3;$M5:$V5)

The same number every year, the NPV of the whole period.

Remaining value

=NPV(P3;P5:$V5)

The NPV of the cash flows still to come.

Start year and end year functions

A locked column (with $) must be the first or last year of a period. To point to a period's start or end explicitly, use SY (start year) or EY (end year):

SY(cell; period)
EY(cell; period)
  • The cell gives the row and the year. Its column picks the year.

  • The period is the period number, from 1 to 4. It is optional. If you leave it out, the period that the formula itself is in is used.

For example, EY(AB5;4) points to row 5 at the end year of period 4.

NPV in Capex Management requests

A request's cash-flow model usually has a Value Development row with an NPV formula, for example =NPV(10%;$N5:P5). The last year of that row is the request's value development figure. The NPV, pre-decision and NPV, post-decision charts on the request dashboard show this figure.

📌 Note: The profitability index is calculated separately. It discounts the whole model at the WACC of the organisational node.

Ending the range at the last year of the request

The length of a Capex Management model varies from request to request, because it follows each request's analysis period. Period 4 is the last period, and it is the one whose length changes. To make the range always end at the request's last year, end it with EY and period 4:

=NPV(10%;$N5:EY(AB5;4))
  • EY means end year.

  • AB5 is the cash-flow cell in the last year column of the model. Row 5 is the row to discount.

  • 4 is the period number, the last period.

Every request then discounts up to its own last year, whether its analysis period is short or long.

💡 Tip: Use the cell in the last year column inside EY. If you pick an earlier column, the range ends that many years before the end of period 4 in every request.

Related functions

Function

How to write it

What it does

IRR

=IRR(range)

Finds the rate at which the NPV of the range is zero.

MIRR

=MIRR(range; finance rate; reinvestment rate)

Modified IRR, using separate rates for financing and reinvestment.

SYS_WACC

=SYS_WACC

Returns the WACC, to use as the NPV rate.

Troubleshooting

What you see

What to check

The formula is rejected

The rate must be one value or one cell. The range must be included. Comparisons such as > are not allowed.

"The chosen column … is not at the beginning or end of a period"

A locked column (with $) is in the middle of a period. Use SY or EY instead.

"Range param refers to unavailable source"

The range points to a row that no longer exists.

The result is 0

The range starts after it ends, or the cells in the range are empty.