Menu

Excel NPV 与 IRR 公式:小心第 0 年陷阱

=NPV(E2,B3:B5)+B2 按 E2 的利率对未来现金流折现,再加上 B2 的初始投资,初始投资不能放进 NPV 里折现。=IRR(B2:B5) 返回让这个 NPV 等于零的利率。XNPV 和 XIRR 支持真实日期。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=NPV(E2,B3:B5)+B2 按 E2 中的利率对第 1 至 3 年的现金流折现,再加上 B2 中的初始投资;初始投资发生在今天,所以不折现。=IRR(B2:B5) 返回让这个净现值恰好为零的折现率。

一个项目的 NPV 与 IRR
E3
ABCDE
1YearCash flowMeasureValue
20-$10,000Rate10%
31$3,000NPV$1,307.29
42$4,200IRR16.34%
53$6,800
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

按 10% 计算,这个项目的价值比成本高 1,307.29,IRR 约为 16.34%。把 E2 的利率改成 16%,NPV 降到约 64;到 20% 时就变成负数。这就是两者的关系:IRR 是 NPV 穿过零点时的利率。

NPV 语法:第一笔现金流在一期之后

=NPV(rate, value1, [value2], ...)

Excel 的 NPV 假设每个值都在期末发生,从一期之后开始。所以区域中的第一个值折现一次,第二个折现两次,依此类推。今天(第 0 年)的投资不能放进区域:像上面的公式那样,在 NPV 之后加上它。投资是负数,因为这是流出的钱。

把它放进区域是 Excel 中最常见的 NPV 错误,而且不会报错,只会得到一个更小的数字:

初始投资放在 NPV 里面与外面的对比
E3
ABCDE
1YearCash flowVersionNPV at 10%
20-$10,000Rate10%
31$3,000Right$1,307.29
42$4,200Wrong$1,188.44
53$6,800
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

错误的写法得到 1,188.44,正好是正确答案除以 1.1:包括投资在内的每笔现金流都被推后了一年。如果第一笔现金流确实发生在第 1 年年末(一年后才为机器付款),那么整个区域都应放进 NPV。

NPV 是怎么算的

NPV 把每笔现金流除以 (1 + 利率) 的年数次方,再把结果相加。下面的表格手动完成这个过程,你可以看到每一年贡献了多少。

逐年折现
C3
ABCDE
1YearCash flowPresent valueRate
20-$10,000.00-$10,000.0010%
31$3,000.00$2,727.27
42$4,200.00$3,471.07
53$6,800.00$5,108.94
6Total$1,307.29
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

第 3 年的 6,800 按 10% 折现后,今天只值 5,108.94。C6 中的合计与 NPV 给出的 1,307.29 相同。第 0 年除以 (1.1)^0,也就是 1,所以保持不变。

IRR 语法与解读

=IRR(values, [guess])

values 按时间顺序包含所有现金流,负的投资放在最前面。它们的间隔必须相等(每年或每月)。guess 是 Excel 搜索的可选起点,默认 10%;只有 IRR 返回 #NUM! 时才需要提供。

当项目的 IRR 高于资金成本或别处可获得的收益率(门槛收益率)时,这个项目就值得做。资本成本为 10%,IRR 为 16.34%,答案是“做”,与为正的 NPV 一致。

如果现金流是按月的,IRR 返回的是月利率。用 =(1+IRR(B2:B13))^12-1 换算成年利率,而不是乘以 12。

当所有值符号相同(没有需要收回的投资),或在 20 次尝试内找不到利率时,IRR 返回 #NUM!。符号变化不止一次的现金流(投资、收益、再投资)可能有两个有效的 IRR;Excel 返回哪一个取决于估计值,这种情况下更应该相信 NPV。

真实日期用 XNPV 和 XIRR

现金流不在固定日期发生时,用 XNPV 和 XIRR。它们为每个值指定日期,按一年 365 天以精确天数折现。与 NPV 不同,XNPV 把每个值都折现到第一个日期,第一个值不折现,所以投资要放在区域里面。

不规则日期
E2
ABCDE
1DateCash flowMeasureValue
22026-01-15-$10,000XNPV at 10%$1,609.73
32026-09-01$3,000XIRR19.08%
42027-06-30$4,200
52028-12-31$6,800
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

XNPV 比按年计算的 NPV 高,因为每笔现金流都比整数年份更早到账:第一笔 3,000 在七个半月后,最后一笔 6,800 在第 3 年结束前两周。把最后一个日期推后一年,两个结果都会下降:同样的钱到得越晚,今天就越不值钱。对于在随机日期存款的投资账户,XIRR 也是计算收益率的正确函数。

动手试试:NPV 与 IRR

该不该买这辆货车?
E3
ABCDE
1YearCash flowMeasureValue
20-$24,000Rate8%
31$7,000NPV
42$7,500
53$8,000
64$8,500
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 货车今天花费 B2,并在第 1 至 4 年年末分别节省 B3:B6 中的金额。在 E3 中按 E2 的利率计算净现值。

提示:第 0 年放在 NPV 外面。

一处小型出租房的收益率
E2
ABCDE
1YearCash flowMeasureValue
20-$50,000IRR
31$9,000
42$9,500
53$10,000
64$10,500
75$25,000
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 E2 中计算 B2:B7 中现金流的内部收益率。

NPV 与 IRR:该信哪一个

问题用原因
按我们的资本成本,这个项目值得做吗?NPVNPV 为正,就以今天的币值增加了这么多价值。
这个项目的收益率是多少?IRR一个百分比,便于和门槛收益率比较。
两个规模不同的项目选哪个?NPVIRR 偏向小项目:1,000 的 50% 比 100,000 的 20% 少得多。
现金流符号变化不止一次NPVIRR 可能有两个答案,也可能没有。
不规则日期的付款XNPV / XIRRNPV 和 IRR 假设各期间隔相等。

如果只是起始值和结束值之间的单一增长率,中间没有其他现金流,用 CAGR 比 IRR 更简单。贷款还款请用 PMT。

常见问题

Excel 中如何计算 NPV?

用 =NPV(利率, 未来现金流) + 初始投资,例如 =NPV(10%,B3:B5)+B2,B2 中的投资以负数输入。NPV 把它的第一个值当作一期之后才到账,所以今天花出去的钱必须放在 NPV 外面。

为什么 Excel 的 NPV 和计算器算出来不一样?

通常是因为把初始投资放进了区域:=NPV(10%,B2:B5) 把第 0 年的金额也折现了一年。Excel 的 NPV 是第一笔现金流之前一期的现值,而不是财务教材里含第 0 期的 NPV。

Excel 中如何计算 IRR?

把所有现金流(包括为负数的初始投资)放在同一个区域,然后用 =IRR(B2:B5)。现金流之间的间隔必须相等;如果是真实日期,用 =XIRR(values, dates)。

为什么 Excel 的 IRR 返回 #NUM!?

要么所有现金流符号相同(不存在让它们相互抵消的利率),要么 Excel 在 20 次尝试内没找到利率。先确认投资是负数,再在第二个参数中给一个估计值:=IRR(B2:B5,0.1)。

NPV 和 XNPV 有什么区别?

NPV 假设现金流之间的间隔相等,并且第一笔在一期之后发生。XNPV 为每笔现金流指定日期,按精确天数折现,并把所有金额折现到第一个日期,所以投资要放在区域里面。

Coddy 编程语言插图

和 Coddy 一起学编程

开始