Seek Returns

如何在 Excel 中计算年金现值

假设有人给你两个选择:未来五年每年拿 1,000 元,或者今天一次性拿一笔钱。那这串未来付款在今天到底值多少钱?答案取决于你采用的折现率,而把每一笔未来付款折现回今天再加总起来的过程,就是年金现值

这是金融里最常见的计算之一。贷款分析、养老金估值、租赁会计,以及各种“一次性领取还是分期收款”的决策,背后都离不开它。在 Excel 里,这个计算通常一个单元格就能完成。

本文分三种情形来讲:普通年金(每期末固定付款)、先付年金(每期期初付款)以及 增长年金(付款逐期增长)。每一部分都会给出公式、Excel 写法和交叉验证方法。

年金现值到底在衡量什么?

年金现值,就是在给定折现率的前提下,与一串未来等额付款在财务上等价的今天一次性金额。换句话说,它回答的是:如果折现率是 rr,那么今天要拿出多少钱,才和这串未来付款流在经济上等值?

背后的逻辑是货币的时间价值。今天的 1 元比明年的 1 元更值钱,因为今天的钱可以先拿去投资并获得收益。所以,越远期的付款,折算到今天后的价值通常越低。把所有未来付款的折现值加总起来,就是年金现值。

这里有两个输入尤其关键:

  1. 折现率。 它没有唯一标准答案,而是取决于现金流的时间结构和风险水平。对于很低风险的现金流,国债收益率可以作为参考;对于更有风险的现金流,折现率就应该更高。折现率越高,现值越低。
  2. 付款时点。 如果付款发生在期末,那是普通年金;如果发生在期初,那是先付年金。所有付款整体往前或往后挪一个期间,都会改变折现结果,尤其在利率较高或期数较长时影响更明显。

普通年金:每期期末固定付款

公式

PV=PMT×1(1+r)nrPV = PMT \times \frac{1 - (1 + r)^{-n}}{r}

其中:

分式部分 1(1+r)nr\frac{1 - (1 + r)^{-n}}{r} 就是 PVIFA,也就是年金现值系数。我们在另一篇 PVIFA 指南 里详细讲过。这里直接把它和付款金额结合使用。

在 Excel 中计算

先按下面的方式摆放数据:

单元格内容
A1Payment
A21000
B1Rate
B20.05
C1Periods
C25
D1Present Value
D2(输入公式)

D2 中使用 Excel 内置的 PV 函数:

=-PV(B2, C2, A2, 0, 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 年的普通年金现值
Excel 工作表:使用 PV 函数计算每年 1,000 元、折现率 5%、期限 5 年的普通年金现值

先付年金

如果付款发生在每期期初,比如房租、某些租赁付款或部分退休账户缴款,只需要把 type 参数改成 1

=-PV(B2, C2, A2, 0, 1)

同样的输入下,这会返回 $4,545.95,大约比普通年金高 5%,因为每笔付款都提前了一个期间,少折现一次。

你也可以把普通年金的结果直接乘上 (1+r)(1 + r)

=-PV(B2, C2, A2, 0, 0)*(1+B2)

两种方法结果相同。

增长年金:逐期递增的付款

增长年金是指每一笔付款都按固定增长率 gg 逐期增加的付款流。现实里的典型例子包括:每年增长 3% 的工资、带有年度递增条款的租赁付款,或者稳定增长的股息。

Excel 没有专门用来计算增长年金现值的内置函数,所以这里需要手动输入公式。

折现率与增长率不相等时的公式

PV=PMT×1(1+g1+r)nrgPV = PMT \times \frac{1 - \left(\dfrac{1 + g}{1 + r}\right)^{n}}{r - g}

其中:

注意:这个公式要求 rgr \neq g。如果 r=gr = g,分母会变成 0;在同样的期末付款假设下,现值可以简化为 PMT×n/(1+r)PMT \times n / (1 + r)。所以后面会单独讲“折现率等于增长率”的情况。

在 Excel 中计算

先按下表布置数据:

单元格内容
A1First Payment
A21000
B1Rate
B20.05
C1Growth Rate
C20.03
D1Periods
D25
E1Present 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,后面还会继续增长。

逐笔折现交叉验证

为了验证结果,你也可以把每年的付款列出来,逐笔折现:

YearPaymentPVIFDiscounted
1$1,000.000.9524$952.38
2$1,030.000.9070$934.24
3$1,060.900.8638$916.50
4$1,092.730.8227$899.13
5$1,125.510.7835$881.68
Total$4,583.92

加总后的结果与闭式公式一致。

Excel 工作表:计算增长率 3%、折现率 5%、期限 5 年的增长年金现值
Excel 工作表:计算增长率 3%、折现率 5%、期限 5 年的增长年金现值

折现率与增长率相等时

如果折现率正好等于增长率,标准公式会出现分母为零的问题。这时现值可以改写为:

PV=PMT×n1+rPV = \frac{PMT \times n}{1 + r}

在 Excel 里,可以用 IF 一次处理两种情况:

=IF(B2=C2, A2*D2/(1+B2), A2*(1-((1+C2)/(1+B2))^D2)/(B2-C2))

这样无论 rrgg 是否相等,都能返回正确结果。

实际应用场景

贷款分析

如果你拿到两种车贷方案,总还款金额差不多,但利率和期限不同,那么把两串付款在同一折现率下换算成现值,就能看出哪个方案从今天的钱来看更便宜。

养老金一次性领取还是按月领取

很多养老金计划会让你选择一次性领取,或者终身按月领取。把“按月领取”的现金流按一个合适的折现率折算成现值,再拿去和一次性金额比较,才算是真正可比。

租赁会计

在 IFRS 16 和 ASC 842 下,承租方会按未来租赁付款的现值计量租赁负债。使用权资产通常以这项租赁负债为起点,但还可能根据预付租赁付款、租赁激励、初始直接成本,以及恢复或拆除义务等项目进行调整。如果租金按固定比例逐年上升,用增长年金框架会更接近实际;如果租金固定不变,用普通年金公式就够了。

常见错误

常见问题

年金现值和 PVIFA 有什么区别?

PVIFA 是“每 1 元付款对应多少现值”的系数,本质上是一个纯乘数。年金现值则等于 PVIFA * 付款金额。两者背后是同一套数学逻辑,只是 PVIFA 把付款金额单独提了出来,方便重复使用。

能用 PV 函数直接算增长年金吗?

不能。Excel 的 PV 只能处理固定付款,也就是普通年金或先付年金。增长年金需要你手动输入公式。

如果每期不是按百分比增长,而是固定多 100 元,怎么办?

那是等差递增年金,不是增长年金。实务上最简单的办法,是把每笔付款列成现金流明细,再逐笔折现。如果付款间隔固定,可以用 NPV;如果日期不规则,更适合用 XNPV

应该用名义折现率还是实际折现率?

原则只有一个:折现率要和现金流口径一致。如果付款是名义金额,就用名义折现率;如果付款是扣除通胀后的实际金额,就用实际折现率。两者混用是常见错误。

为什么期数翻倍,现值却不会翻倍?

因为折现会让远期付款的今天价值越来越小。年金现值会随着 nn 增加而上升,但上升速度会越来越慢。对一个固定不变的永续年金来说,它的上限会逼近 PMT/rPMT / r

折现率应该怎么选?

没有统一标准答案。对于非常低风险的现金流,通常可以参考同期限国债收益率;对于有违约或不确定性的现金流,则应在此基础上加入风险溢价。在企业财务里,WACC 也是常见基准。最稳妥的做法,是在几个合理区间内做敏感性分析。