昨天一个学员在微信上急吼吼地问我:“老师,我算一个项目五年的累计增长率,用(最后值/最初值)^(1/5)-1,出来的数值怎么跟网上查到的行业平均差那么多?是不是我公式写错了?”我一看他发的截图,好家伙,他把最初值填了负数,算出来个荒谬的结果。这种事儿我碰见不下百回了,今天就跟你把CAGR复合增长率在Excel里怎么算、怎么避坑、怎么让结果看起来不像编的,掰开了揉碎了讲清楚。
先说那个最基础的公式,Excel里CAGR的标准算法就是 =(终值/初值)^(1/年数) - 1。比如你2019年收入100万,2025年收入200万,中间过了6年,那公式就是 =(200/100)^(1/6)-1,回车后你得到个小数,改成百分数,大概12.25%左右。很多教材就停在这儿了,但实操里你马上会遇到三个让人崩溃的情况:第一,初值是负数或者零怎么办?第二,时间不是整年比如三年零五个月怎么搞?第三,年份里有的数值是缺失的怎么插值?我今天挨个给你演示一遍。
先解决第一个坑:初值负数。我以前做企业并购项目时,有个标的公司第一年净利润是负的,第二年扭亏,第三年大赚,销售非要我算一个CAGR出来给老板汇报。我当时年轻,直接套公式,结果算出个负数,主管看了一眼就骂我:“你见过增长率是负的但钱越赚越多的公司吗?”后来我学乖了,这种情况绝对不能直接用CAGR,你需要的是绝对值的复合增长率或者干脆算算平均增长率。如果非要算,可以先把所有数值都平移一下,比如都加上一个足够大的常数让它们全变正,但算出来的结果跟实际增长率有偏差,一般不推荐。我的做法是直接跟老板说:“这个数据有负值,CAGR失效,我给你算个总增长率和年均增长率吧。”然后把初值、终值、总增长率(终值/初值-1)和年数摆出来,或者用XIRR函数算内部回报率,那个能处理正负现金流。具体怎么用XIRR?你选好现金流列和对应的日期列,注意日期必须按时间升序排列,然后输入 =XIRR(现金流范围, 日期范围, 猜测值),猜测值填0.1就行,照样能算出年化收益率。
再聊第二个坑:时间不是整数年。比如你从2020年3月投了一笔钱,到2025年9月变成了某个数,你觉得该用几年?很多新手直接减个5.5年,但Excel里处理分数年要用精确的天数。我自己的做法是先算总天数,再用总天数除以365.25得到准确年数,精确到小数点后四位。公式为 =(终值/初值)^(1/((终止日期-开始日期)/365.25))-1。注意Excel中的日期是序列数,直接相减就是天数。举个例子,你在A1写开始日期2020/3/15,B1写终止日期2025/9/10,C1写终值,D1写初值,那么CAGR公式就是 =(C1/D1)^(1/((B1-A1)/365.25))-1。之所以用365.25而不是365,是因为要补偿闰年带来的微小误差,尤其在跨越十年以上时,这个差别会很明显。当然,如果你较真,也可以用Excel的YEARFRAC函数,直接计算两个日期之间的年数,公式为 =YEARFRAC(start_date, end_date, [basis])。Basis参数常用的有0(美国30/360)、1(实际/实际)、3(实际/365)等等。一般来说,用1(实际天数/实际年份里的天数)最准确,但如果你要按会计惯例就用0。我比较懒,直接用(结束日期-开始日期)/365.25,大多数情况下够用了。反正你要让老板听得懂,别搞太复杂,否则他下一句就是“你咋算的?我怎么看不懂?”
第三个坑:数据序列中有缺失值。比如你列了2019到2025年的销售额,但2022年因为公司系统升级数据没录全,那个格子是空的。你不能直接把空单元格拉进公式里,否则#DIV/0!或者计算错误。我的土办法是先用线性插值把缺失值补上,然后再算CAGR。Excel里有个FORECAST.LINEAR函数,或者更简单点:假设2021年是100万,2023年是130万,那2022年的估计值就是(100+130)/2=115万。如果你手头数据点多,用趋势线拟合也行。但别为了追求精确而过度拟合,毕竟CAGR本来就是一个平均化的指标,误差个百分之零点几在实务中根本没人追究。重要的是你用了啥口径、填了哪些假设,得在附注里写清楚,不然以后审计来问,你说不清。
其实在实际工作中,我最多的场景是用CAGR来做预算、做投资测算、或者写商业计划书。投资人也喜欢问:“你未来五年预估CAGR多少?”你要是张口就报个30%,他立刻会让你拿出历史数据验证。所以我建议你用Excel的“预测工作表”功能,先基于已有历史数据生成一个线性或指数趋势,然后引出来CAGR,这样有据可查。具体步骤是:选中你的历史数据和对应年份(年份在左边,数据在右边),点开“数据”选项卡里的“预测工作表”,Excel会自动生成一张新工作表,里面包含了预测值和置信区间。你可以把预测终值代入CAGR公式里,看看未来几年的复合增长率是不是符合行业规律。这里提醒一句:别用Excel默认的“指数平滑”模型去预测那种有明显季节性的数据,比如零售业的销售,否则明年一月份你的预测会高得离谱。你最好把版本升级到2026版看看,Excel 2026在预测功能里新增了周期检测,如果你用Office 365的订阅版,已经自动更新了。
避坑指南:千万别把CAGR跟平均增长率(即算术平均)搞混。CAGR是几何平均,假设每年按复利增长;算术平均只是简单把各年增长率加起来除以年数,会高估真实表现。比如第一年涨100%,第二年跌50%,算术平均增长率是25%,但实际你钱没变,CAGR是0%。你拿算术平均去忽悠投资人,被发现后职业信用会崩盘。
我自己踩过一个大坑:2018年帮一家初创公司做财务模型,他们把前三年的亏损当作初值,第四年刚盈利,终值也是一个很小的正数,算出来的CAGR奇高无比。老板一看乐开了花,拿着PPT到处去融资。我后来总觉得不对劲,重新审查数据发现,当初为了体现“爆发式增长”,他们把初值选成了第一年亏损的绝对值,终值选成了第四年的净利润,结果CAGR变成了百分之几百,完全是数字游戏。幸好我当时还没签报告,赶紧让他们把年份调整到连续盈利的区间,或者干脆用股东权益复合增长率来代替,这才没出事。从那以后我养成一个习惯:算CAGR之前先检查期初期末数值的正负性和量级,如果初值接近零或者为负,直接废弃这个指标,改用其他方法,比如内部收益率(IRR)或者平均年化回报率(CAGR的变体,但要求所有现金流都是正的)。
还有个小细节:Excel里显示增长率时,很多人习惯直接保留两位小数,比如12.25%。这没问题,但如果你要跟同行对比,最好统一精度。我在报表里一般保留到基准点后两位,除非数字特别小(比如0.03%),那就保留到四位。另外,可以用TEXT函数把结果格式化成带百分号的文本,公式为 =TEXT(你的CAGR结果,"0.00%"),这样看起来更规范。不过注意,文本格式的数值不能直接参与后续计算,所以正式模型里还是得保留数值格式,只在展示时用TEXT。
最后再说一个软件问题:如果你用的是WPS Office(很多企业用户还在用),它的函数跟Excel基本兼容,但某些数组函数(比如SEQUENCE)可能不支持,WPS 2023以后才加入了大部分新函数。2026年WPS应该已经更新到2026版了,常用功能基本一致。但不管用哪个版本,我都建议你在公式外面再套一层ROUND函数,比如 =ROUND(你的CAGR公式,4),避免出现那种花里胡哨的小数点后面跟着一长串。毕竟老板们看报表,一眼扫过去,数字要清爽。
讲了这么多,其实CAGR最大的用处不是算出来一个数,而是要能解释这个数是怎么算的、有什么局限。很多财务新手喜欢把所有增长都算一遍CAGR,好像这就是万能药。我告诉你,遇到那种波动特别大的行业,比如半导体或者生物医药,一年翻倍、一年腰斩,CAGR就没什么意义,因为完全掩盖了风险。这时候你应该配上标准差、最大回撤等指标一并呈现。别忘了,财务分析的本质不是炫技,是帮决策者看清真相。
好啦,今天的实操课就到这里。最近我整理了一份全电发票红冲操作流程截图,还附带了一份自制的CAGR计算模板,里面有负数处理、分数年处理、缺失值插值三种常见场景,谁要就私我。
