如何在 Excel 中计算年金现值
假设有人给你两个选择:未来五年每年拿 1,000 元,或者今天一次性拿一笔钱。那这串未来付款在今天到底值多少钱?答案取决于你采用的折现率,而把每一笔未来付款折现回今天再加总起来的过程,就是年金现值。
这是金融里最常见的计算之一。贷款分析、养老金估值、租赁会计,以及各种“一次性领取还是分期收款”的决策,背后都离不开它。在 Excel 里,这个计算通常一个单元格就能完成。
本文分三种情形来讲:普通年金(每期末固定付款)、先付年金(每期期初付款)以及 增长年金(付款逐期增长)。每一部分都会给出公式、Excel 写法和交叉验证方法。
年金现值到底在衡量什么?
年金现值,就是在给定折现率的前提下,与一串未来等额付款在财务上等价的今天一次性金额。换句话说,它回答的是:如果折现率是 ,那么今天要拿出多少钱,才和这串未来付款流在经济上等值?
背后的逻辑是货币的时间价值。今天的 1 元比明年的 1 元更值钱,因为今天的钱可以先拿去投资并获得收益。所以,越远期的付款,折算到今天后的价值通常越低。把所有未来付款的折现值加总起来,就是年金现值。
这里有两个输入尤其关键:
- 折现率。 它没有唯一标准答案,而是取决于现金流的时间结构和风险水平。对于很低风险的现金流,国债收益率可以作为参考;对于更有风险的现金流,折现率就应该更高。折现率越高,现值越低。
- 付款时点。 如果付款发生在期末,那是普通年金;如果发生在期初,那是先付年金。所有付款整体往前或往后挪一个期间,都会改变折现结果,尤其在利率较高或期数较长时影响更明显。
普通年金:每期期末固定付款
公式
其中:
- 是每期付款金额。
- 是每期折现率。
- 是期数。
分式部分 就是 PVIFA,也就是年金现值系数。我们在另一篇 PVIFA 指南 里详细讲过。这里直接把它和付款金额结合使用。
在 Excel 中计算
先按下面的方式摆放数据:
| 单元格 | 内容 |
|---|---|
A1 | Payment |
A2 | 1000 |
B1 | Rate |
B2 | 0.05 |
C1 | Periods |
C2 | 5 |
D1 | Present Value |
D2 | (输入公式) |
在 D2 中使用 Excel 内置的 PV 函数:
=-PV(B2, C2, A2, 0, 0)
各参数含义如下:
rate:每期折现率,也就是B2。nper:期数,也就是C2。pmt:每期付款金额,也就是A2。Excel 使用标准现金流符号约定,所以当pmt为正时,PV通常会返回负值;前面的负号是为了把结果翻成正的现值。fv:终值,这里填0,表示除这串年金外没有额外的尾款。type:0表示普通年金,也就是期末付款。
对于“每年 1,000 元、折现率 5%、持续 5 年”这个例子,Excel 返回 $4,329.48。
用闭式公式交叉验证
在 D4 输入 Formula check,然后在 D5 输入:
=A2*(1-(1+B2)^-C2)/B2
结果也应该是 4329.48,这说明 PV 函数和闭式公式是一致的。

先付年金
如果付款发生在每期期初,比如房租、某些租赁付款或部分退休账户缴款,只需要把 type 参数改成 1:
=-PV(B2, C2, A2, 0, 1)
同样的输入下,这会返回 $4,545.95,大约比普通年金高 5%,因为每笔付款都提前了一个期间,少折现一次。
你也可以把普通年金的结果直接乘上 :
=-PV(B2, C2, A2, 0, 0)*(1+B2)
两种方法结果相同。
增长年金:逐期递增的付款
增长年金是指每一笔付款都按固定增长率 逐期增加的付款流。现实里的典型例子包括:每年增长 3% 的工资、带有年度递增条款的租赁付款,或者稳定增长的股息。
Excel 没有专门用来计算增长年金现值的内置函数,所以这里需要手动输入公式。
折现率与增长率不相等时的公式
其中:
- 是第一期付款金额,假设发生在第一期末。后面每一期的付款都等于 。如果付款从今天立刻开始,就应把这串现金流视为增长型先付年金,并调整付款时点。
- 是每期折现率。
- 是每期增长率。
- 是期数。
注意:这个公式要求 。如果 ,分母会变成 0;在同样的期末付款假设下,现值可以简化为 。所以后面会单独讲“折现率等于增长率”的情况。
在 Excel 中计算
先按下表布置数据:
| 单元格 | 内容 |
|---|---|
A1 | First Payment |
A2 | 1000 |
B1 | Rate |
B2 | 0.05 |
C1 | Growth Rate |
C2 | 0.03 |
D1 | Periods |
D2 | 5 |
E1 | Present Value |
E2 | (输入公式) |
在 E2 输入:
=A2*(1-((1+C2)/(1+B2))^D2)/(B2-C2)
如果首期付款是 1,000 元、折现率 5%、增长率 3%、期限 5 年,Excel 返回 $4,583.92。
这个结果高于普通年金的 $4,329.48,因为后面的每一笔付款都更大。例如第二期是 $1,030,第三期是 $1,060.90,后面还会继续增长。
逐笔折现交叉验证
为了验证结果,你也可以把每年的付款列出来,逐笔折现:
| Year | Payment | PVIF | Discounted |
|---|---|---|---|
| 1 | $1,000.00 | 0.9524 | $952.38 |
| 2 | $1,030.00 | 0.9070 | $934.24 |
| 3 | $1,060.90 | 0.8638 | $916.50 |
| 4 | $1,092.73 | 0.8227 | $899.13 |
| 5 | $1,125.51 | 0.7835 | $881.68 |
| Total | $4,583.92 |
加总后的结果与闭式公式一致。

折现率与增长率相等时
如果折现率正好等于增长率,标准公式会出现分母为零的问题。这时现值可以改写为:
在 Excel 里,可以用 IF 一次处理两种情况:
=IF(B2=C2, A2*D2/(1+B2), A2*(1-((1+C2)/(1+B2))^D2)/(B2-C2))
这样无论 和 是否相等,都能返回正确结果。
实际应用场景
贷款分析
如果你拿到两种车贷方案,总还款金额差不多,但利率和期限不同,那么把两串付款在同一折现率下换算成现值,就能看出哪个方案从今天的钱来看更便宜。
养老金一次性领取还是按月领取
很多养老金计划会让你选择一次性领取,或者终身按月领取。把“按月领取”的现金流按一个合适的折现率折算成现值,再拿去和一次性金额比较,才算是真正可比。
租赁会计
在 IFRS 16 和 ASC 842 下,承租方会按未来租赁付款的现值计量租赁负债。使用权资产通常以这项租赁负债为起点,但还可能根据预付租赁付款、租赁激励、初始直接成本,以及恢复或拆除义务等项目进行调整。如果租金按固定比例逐年上升,用增长年金框架会更接近实际;如果租金固定不变,用普通年金公式就够了。
常见错误
- 利率和期数单位不一致。 如果付款按月发生,名义年利率就要除以 12,同时把按年表示的期限也换算成月数。
- 忘了
PV的符号约定。 Excel 在pmt为正时,PV往往返回负值。你可以对pmt取负,也可以在整个PV公式前加负号。 - 对期初付款用了普通年金公式。 如果实际付款发生在期初,而你仍然按普通年金去算,现值会被低估一个完整期间的折现效果。
- 在 时仍然套用增长年金公式。 这会让分母变成 0。遇到这种情况,应该改用特殊公式 ,或直接使用上面的
IF写法。 - 折现率选得不合理。 公式本身只是计算工具,真正的判断在于折现率。折现率过低会高估现值,过高会低估现值,所以最好做敏感性分析。
常见问题
年金现值和 PVIFA 有什么区别?
PVIFA 是“每 1 元付款对应多少现值”的系数,本质上是一个纯乘数。年金现值则等于 PVIFA * 付款金额。两者背后是同一套数学逻辑,只是 PVIFA 把付款金额单独提了出来,方便重复使用。
能用 PV 函数直接算增长年金吗?
不能。Excel 的 PV 只能处理固定付款,也就是普通年金或先付年金。增长年金需要你手动输入公式。
如果每期不是按百分比增长,而是固定多 100 元,怎么办?
那是等差递增年金,不是增长年金。实务上最简单的办法,是把每笔付款列成现金流明细,再逐笔折现。如果付款间隔固定,可以用 NPV;如果日期不规则,更适合用 XNPV。
应该用名义折现率还是实际折现率?
原则只有一个:折现率要和现金流口径一致。如果付款是名义金额,就用名义折现率;如果付款是扣除通胀后的实际金额,就用实际折现率。两者混用是常见错误。
为什么期数翻倍,现值却不会翻倍?
因为折现会让远期付款的今天价值越来越小。年金现值会随着 增加而上升,但上升速度会越来越慢。对一个固定不变的永续年金来说,它的上限会逼近 。
折现率应该怎么选?
没有统一标准答案。对于非常低风险的现金流,通常可以参考同期限国债收益率;对于有违约或不确定性的现金流,则应在此基础上加入风险溢价。在企业财务里,WACC 也是常见基准。最稳妥的做法,是在几个合理区间内做敏感性分析。