如何在 Excel 中计算年金现值
如何在 Excel 中计算年金现值2026年5月5日假设有人给你两个选择:未来五年每年拿 1,000 元,或者今天一次性拿一笔钱。那这串未来付款在今天到底值多少钱?答案取决于你采用的折现率,而把每一笔未来付款折现回今天再加总起来的过程,就是年金现值。
这是金融里最常见的计算之一。贷款分析、养老金估值、租赁会计,以及各种“一次性领取还是分期收款”的决策,背后都离不开它。在 Excel 里,这个计算通常一个单元格就能完成。
本文分三种情形来讲:普通年金(每期末固定付款)、先付年金(每期期初付款)以及 增长年金(付款逐期增长)。每一部分都会给出公式、Excel 写法和交叉验证方法。
年金现值到底在衡量什么?
年金现值,就是在给定折现率的前提下,与一串未来等额付款在财务上等价的今天一次性金额。换句话说,它回答的是:如果折现率是 rrr,那么今天要拿出多少钱,才和这串未来付款流在经济上等值?
背后的逻辑是货币的时间价值。今天的 1 元比明年的 1 元更值钱,因为今天的钱可以先拿去投资并获得收益。所以,越远期的付款,折算到今天后的价值通常越低。把所有未来付款的折现值加总起来,就是年金现值。
这里有两个输入尤其关键:
折现率。 它没有唯一标准答案,而是取决于现金流的时间结构和风险水平。对于很低风险的现金流,国债收益率可以作为参考;对于更有风险的现金流,折现率就应该更高。折现率越高,现值越低。
付款时点。 如果付款发生在期末,那是普通年金;如果发生在期初,那是先付年金。所有付款整体往前或往后挪一个期间,都会改变折现结果,尤其在利率较高或期数较长时影响更明显。
普通年金:每期期末固定付款
公式
PV=PMT×1−(1+r)−nrPV = PMT \times \frac{1 - (1 + r)^{-n}}{r}PV=PMT×r1−(1+r)−n
其中:
PMTPMTPMT 是每期付款金额。
rrr 是每期折现率。
nnn 是期数。
分式部分 1−(1+r)−nr\frac{1 - (1 + r)^{-n}}{r}r1−(1+r)−n 就是 PVIFA,也就是年金现值系数。我们在另一篇 PVIFA 指南 里详细讲过。这里直接把它和付款金额结合使用。
在 Excel 中计算
先按下面的方式摆放数据:
单元格内容A1PaymentA21000B1RateB20.05C1PeriodsC25D1Present ValueD2(输入公式)
在 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 函数和闭式公式是一致的。
Excel 工作表:使用 PV 函数计算每年 1,000 元、折现率 5%、期限 5 年的普通年金现值
先付年金
如果付款发生在每期期初,比如房租、某些租赁付款或部分退休账户缴款,只需要把 type 参数改成 1:
=-PV(B2, C2, A2, 0, 1)
同样的输入下,这会返回 $4,545.95,大约比普通年金高 5%,因为每笔付款都提前了一个期间,少折现一次。
你也可以把普通年金的结果直接乘上 (1+r)(1 + r)(1+r):
=-PV(B2, C2, A2, 0, 0)*(1+B2)
两种方法结果相同。
增长年金:逐期递增的付款
增长年金是指每一笔付款都按固定增长率 ggg 逐期增加的付款流。现实里的典型例子包括:每年增长 3% 的工资、带有年度递增条款的租赁付款,或者稳定增长的股息。
Excel 没有专门用来计算增长年金现值的内置函数,所以这里需要手动输入公式。
折现率与增长率不相等时的公式
PV=PMT×1−(1+g1+r)nr−gPV = PMT \times \frac{1 - \left(\dfrac{1 + g}{1 + r}\right)^{n}}{r - g}PV=PMT×r−g1−(1+r1+g)n
其中:
PMTPMTPMT 是第一期付款金额,假设发生在第一期末。后面每一期的付款都等于 PMT×(1+g)t−1PMT \times (1 + g)^{t-1}PMT×(1+g)t−1。如果付款从今天立刻开始,就应把这串现金流视为增长型先付年金,并调整付款时点。
rrr 是每期折现率。
ggg 是每期增长率。
nnn 是期数。
注意:这个公式要求 r≠gr \neq gr=g。如果 r=gr = gr=g,分母会变成 0;在同样的期末付款假设下,现值可以简化为 PMT×n/(1+r)PMT \times n / (1 + r)PMT×n/(1+r)。所以后面会单独讲“折现率等于增长率”的情况。
在 Excel 中计算
先按下表布置数据:
单元格内容A1First PaymentA21000B1RateB20.05C1Growth RateC20.03D1PeriodsD25E1Present ValueE2(输入公式)
在 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,后面还会继续增长。
逐笔折现交叉验证
为了验证结果,你也可以把每年的付款列出来,逐笔折现:
YearPaymentPVIFDiscounted1$1,000.000.9524$952.382$1,030.000.9070$934.243$1,060.900.8638$916.504$1,092.730.8227$899.135$1,125.510.7835$881.68Total$4,583.92
加总后的结果与闭式公式一致。
Excel 工作表:计算增长率 3%、折现率 5%、期限 5 年的增长年金现值
折现率与增长率相等时
如果折现率正好等于增长率,标准公式会出现分母为零的问题。这时现值可以改写为:
PV=PMT×n1+rPV = \frac{PMT \times n}{1 + r}PV=1+rPMT×n
在 Excel 里,可以用 IF 一次处理两种情况:
=IF(B2=C2, A2*D2/(1+B2), A2*(1-((1+C2)/(1+B2))^D2)/(B2-C2))
这样无论 rrr 和 ggg 是否相等,都能返回正确结果。
实际应用场景
贷款分析
如果你拿到两种车贷方案,总还款金额差不多,但利率和期限不同,那么把两串付款在同一折现率下换算成现值,就能看出哪个方案从今天的钱来看更便宜。
养老金一次性领取还是按月领取
很多养老金计划会让你选择一次性领取,或者终身按月领取。把“按月领取”的现金流按一个合适的折现率折算成现值,再拿去和一次性金额比较,才算是真正可比。
租赁会计
在 IFRS 16 和 ASC 842 下,承租方会按未来租赁付款的现值计量租赁负债。使用权资产通常以这项租赁负债为起点,但还可能根据预付租赁付款、租赁激励、初始直接成本,以及恢复或拆除义务等项目进行调整。如果租金按固定比例逐年上升,用增长年金框架会更接近实际;如果租金固定不变,用普通年金公式就够了。
常见错误
利率和期数单位不一致。 如果付款按月发生,名义年利率就要除以 12,同时把按年表示的期限也换算成月数。
忘了 PV 的符号约定。 Excel 在 pmt 为正时,PV 往往返回负值。你可以对 pmt 取负,也可以在整个 PV 公式前加负号。
对期初付款用了普通年金公式。 如果实际付款发生在期初,而你仍然按普通年金去算,现值会被低估一个完整期间的折现效果。
在 r=gr = gr=g 时仍然套用增长年金公式。 这会让分母变成 0。遇到这种情况,应该改用特殊公式 PMT×n/(1+r)PMT \times n / (1 + r)PMT×n/(1+r),或直接使用上面的 IF 写法。
折现率选得不合理。 公式本身只是计算工具,真正的判断在于折现率。折现率过低会高估现值,过高会低估现值,所以最好做敏感性分析。
常见问题
年金现值和 PVIFA 有什么区别?
PVIFA 是“每 1 元付款对应多少现值”的系数,本质上是一个纯乘数。年金现值则等于 PVIFA * 付款金额。两者背后是同一套数学逻辑,只是 PVIFA 把付款金额单独提了出来,方便重复使用。
能用 PV 函数直接算增长年金吗?
不能。Excel 的 PV 只能处理固定付款,也就是普通年金或先付年金。增长年金需要你手动输入公式。
如果每期不是按百分比增长,而是固定多 100 元,怎么办?
那是等差递增年金,不是增长年金。实务上最简单的办法,是把每笔付款列成现金流明细,再逐笔折现。如果付款间隔固定,可以用 NPV;如果日期不规则,更适合用 XNPV。
应该用名义折现率还是实际折现率?
原则只有一个:折现率要和现金流口径一致。如果付款是名义金额,就用名义折现率;如果付款是扣除通胀后的实际金额,就用实际折现率。两者混用是常见错误。
为什么期数翻倍,现值却不会翻倍?
因为折现会让远期付款的今天价值越来越小。年金现值会随着 nnn 增加而上升,但上升速度会越来越慢。对一个固定不变的永续年金来说,它的上限会逼近 PMT/rPMT / rPMT/r。
折现率应该怎么选?
没有统一标准答案。对于非常低风险的现金流,通常可以参考同期限国债收益率;对于有违约或不确定性的现金流,则应在此基础上加入风险溢价。在企业财务里,WACC 也是常见基准。最稳妥的做法,是在几个合理区间内做敏感性分析。