资讯动态

Excel中环比与同比的计算公式与常用函数全攻略

发布时间:2026/10/9 10:43:42 来源:尧图企业网站定制
做数据分析绕不开两个词环比和同比。不管你是做运营、财务、销售还是市场只要涉及“这个月比上个月涨了多少”“今年比去年这个时候怎么样”本质上算的都是这两样东西。而Excel恰恰是绝大多数人用得最多、也最容易算错这两样东西的工具。这篇内容不整虚的直接围绕“Excel 计算环比与同比 常用函数”这条主线展开。我会把计算公式、踩过的坑、实际场景中的处理办法、以及配合使用的函数一次讲透既照顾新手也能让平时已经在用 Excel 的人查漏补缺。内容适合所有需要自己做统计报表、写数据分析报告、做经营复盘的朋友参考。1. 环比与同比先分清楚再动手算1.1 环比是什么解决什么问题环比指的是“相邻两个时期”的比较。最常见的说法就是“本月比上月”、“本周比上周”、“今日比昨日”。公式很简单环比增长率 (本期数 - 上期数) / 上期数 × 100%举个例子。某店铺1月销售额120万2月销售额150万那么2月的环比增长率就是 (150-120)/120 25%这意味着2月比1月增长了四分之一。环比的业务价值在于捕捉“连续变化趋势”。如果一家公司这条月的环比增长突然从5%掉到-8%说明近期经营出现了波动——可能是季节性回落也可能是促销结束后的正常回调还可能真的出了问题。所以环比在业务日报、周报、月度经营分析里出现频率最高。在Excel里环比计算的本质是“行与行之间的相对引用”。你只需要把上一期数据所在单元格当成基准用当前行的值减掉它再除以它搞定。1.2 同比是什么解决什么问题同比强调的是“与去年同期比较”。公式同样是增长率的形式同比增长率 (本期数 - 上年同期数) / 上年同期数 × 100%依旧是那个例子。如果去年2月销售额是100万那今年2月的同比增长率就是 (150-100)/100 50%。这个50%意味着今年的2月比去年的2月多做了50万的生意。为什么要脱离环比去看同比因为很多行业有明显季节性。比如月饼只有中秋前好卖羽绒服只有冬天有量旅游行业寒暑假才是高峰。如果你拿9月的业绩和8月比环比数据可能波动巨大甚至会得出“暴跌”的错误判断。这时候只有跟去年同期比才能看出业务到底是真退步了还是只是周期性回落。所以环比重“短期变动趋势”同比重“长期成长能力”。做判断的时候两个指标一起看才完整只看任何一个都容易做出短视决策。1.3 常见误区比基数错了其他全错我自己见过很多次这种情况数据算出来并大得吓人结果一检查根本不是计算错误而是基准日期选错了。举两个高频错误用今年一季度的值和去年四季度的值做同比——这其实算的是环比因为两个期间是“相邻”的不是“跨年同期”。用今年累计值和去年同期当月值比——一个累计值、一个当月值口径都不同算出来的增长率没有任何意义。所以动手前先问自己一句我要对比的这两个数字它们的“期间长度”和“日历位置”是不是一致如果答案是否定的先调整数据口径再谈计算公式。2. Excel 里算环比和同比的完整实操流程2.1 数据准备把表整理成 Excel 认识的样子很多人做分析卡在第一步不是不会公式而是原始数据乱。比如在一行的单元格里写“2024年1-2月”日期既不是标准日期格式也不是文本统一格式后面根本没法做筛选和计算。我强烈建议建立一个标准的“一维表”结构只有三列第一列日期必须是真正的日期格式第二列维度比如产品线、渠道、门店第三列数值。注意下面几个准备要点日期列必须用 Excel 认识的日期格式比如 2024/1/1而不是“2024.1.1”或“2024年1月”。在日期列右侧加一列“月份数”用公式 MONTH(A2) 提取月份加一列“年份数”用公式 YEAR(A2) 提取年份这样可以避开跨年时“1月”到底是哪一年的歧义。数值列必须是纯数值不要带单位“元”“万”也不要在数字旁边加“约”字。所有格式问题放到展示层去处理数据层保持干净。数据清洗干净后算环比和同比就变成一个非常机械的过程了。2.2 环比公式怎么写从简单行差值说起假设原始数据如下已经按月份升序排好A列月份B列销售额2024/1/112000002024/2/115000002024/3/11400000在C2单元格输入公式(B2-B1)/B1然后设置C列单元格格式为“百分比保留两位小数”即可得到2月的环比增长率。向下填充到C33月的数据是(1400000-1500000)/1500000结果为-6.67%。这里有个细节第一行数据前面没有上期数所以环比会没有值或者需要写一个判断公式比如IF(COUNT(B1:B2)2,(B2-B1)/B1,)用COUNT判断前后两期是否都有值缺失时返回空文本避免表格里出现#DIV/0!错误。2.3 同比公式怎么写跨行引用要小心同比公式难点不在计算而在“把上一年的同一个月找出来”。这里分两种情况讨论。情况一数据就是按月连续排列每年12条记录。那么今年2月的去年同期数据就是当前行往下数12行的那个值。假设数据从第2行开始到第14行是去年2月第26行是今年2月在C26单元格写(B26-B14)/B14这个做法直观但有一点隐患如果数据中间缺了某几个月行数对不齐公式会引用错行。所以连续月度数据固然可行但并不是最健壮的方案。情况二用年份和月份辅助列来匹配。这是我在实际报表里最常用的方式。增加两列辅助列然后配合SUMIFS、INDEXMATCH等函数自动去匹配“上一年同月”的数值即使数据不是完全连续只要当月和去年同期都有记录公式也能正确找到目标值。后面会详细演示这种做法的公式在这里先给结论数据量小的时候用行偏移没有问题数据量大或者要建自动刷新模板务必采用“查找匹配”方案。2.4 让表自动更新从手工填公式到自动刷新很多朋友的报表是Excel里手工维护的每月一次新增一行、下拉填充公式问题不大。但如果是数据源会动态变化的情况推荐几个方法把原始数据放入 Excel 表格快捷键 CtrlT这样公式会自动扩展到新增行不用每行下拉填充。用数据透视表汇总数据再用 GETPIVOTDATA 函数引用透视表结果计算环比同比透视表数据更新后计算结果也会联动刷新。用 Power Query 做数据合并和清洗配合“关闭并加载至工作表”实现一键刷新适合数据来源复杂多个工作表、多个文件的报表。我个人实际使用感受如果你的数据规模在几千行以内用“Excel表格 公式引用”就够了如果涉及多文件合并、月度自动追加Power Query 才是正解。3. 数据分析中最常用的Excel函数逐个拆解3.1 聚合函数SUM、SUMIF、SUMIFS、COUNTIFS计算同比和环比之前很多场景需要先把原始数据“聚合”到月/季度粒度。这时候条件求和函数就是主力。SUMIFS是SUMIF的多条件版本也是实际生产中使用频率最高的。语法是SUMIFS(求和区域, 条件区域1, 条件1, 条件区域2, 条件2, ...)比如统计某产品线2024年2月的总销售额SUMIFS(C2:C1000, A2:A1000, 2024/2/1, B2:B1000, 产品线A)注意SUMIFS的几个坑条件中的日期需要用DATE函数构建或者在单元格里引用日期不要直接在公式里写2024/2/1这样的文本容易因为Excel区域日期设置不同导致匹配失败。正确写法是 SUMIFS(C2:C1000, A2:A1000, DATE(2024,2,1), ...)。条件区域和求和区域必须等长且不能整列引用。COUNTIFS主要用来统计记录数比如某个月有多少个有效订单、多少个零销量SKU。在经营分析中它配合SUMIFS可以算出客单价、连带率这类衍生指标。3.2 查找引用函数VLOOKUP、INDEXMATCH、XLOOKUP计算同比时最核心的刚需就是“把上年同期的数据取过来”。做不到这一点一切都免谈。VLOOKUP经典用法VLOOKUP(查找值, 表区域, 返回列序号, 0)比如有一张“去年各月销售额表”想查找去年6月的销售额可以写VLOOKUP(DATE(2023,6,1), $F$2:$G$13, 2, 0)VLOOKUP限制很多比如只能从首列查找、查找列必须在区域第一列如果数据结构稍有变化就得改公式。所以数据量大、结构复杂时我推荐INDEXMATCHINDEX(返回区域, MATCH(查找值, 查找区域, 0))里面MATCH负责找到目标行在第几行INDEX再从这一行里取出对应值。优势是查找值和返回值都可以放在任意列不受“首列限制”。Excel 365用户可以直接用XLOOKUP语法更简洁XLOOKUP(查找值, 查找区域, 返回区域)没有查不到就报错的问题而且支持模糊匹配、多条件连接匹配属于目前最省心的选择。如果你的Excel版本还不支持XLOOKUP那就老实使用INDEXMATCH。3.3 日期函数YEAR、MONTH、EOMONTH、DATE、TEXT做同比和环比几乎不可能绕开日期处理。下面几个是实战中最常用的。YEAR(日期)提取年份。MONTH(日期)提取月份返回1到12的整数。DAY(日期)提取日用于检查数据是否对齐。DATE(年,月,日)将年月日数字转换为真正的日期常用在构建“去年同期月份”的日期上。EOMONTH(日期, 月数)返回指定月份数之前或之后的月末日期特别适合处理“按月对比”的边界问题。比如 EOMONTH(今天, -12) 返回去年同月最后一天。TEXT(日期, yyyy-mm)把日期格式化为“2024-02”这样的文本常用于做匹配键或者图表的分类轴标签。举个例子动态计算“上个月”的环比时假设A2是当前最新月份日期EOMONTH(A2, -2)1这会让“上上月的第一天”自动出现在单元格里配合SUMIFS就能每月自动更新上月环比数据不用每个月手动改日期。3.4 容错与逻辑函数IFERROR、IF、IFS、N数据清洗地再彻底真实业务数据里仍然会有缺失值和异常值。环比同比计算里最典型的错误就是分母为0比如上期销售额为0这个月哪怕也做了0业绩公式里也必然得到#DIV/0!。所以我在模板里几乎会给每个比值计算包一层IFERRORIFERROR((B2-B1)/B1, 新增)当上期不存在或为0时显示成“新增”比错误代码更符合业务阅读习惯。IF函数主要用于条件判断比如判断环比增长是否超过20%IF(C20.2, 大幅增长, IF(C20, 微增, 下降))IFS可以改写多重条件公式更紧凑适合判断3个以上档位。不过IFS需要Excel 2016以上版本老版本不识别。N函数可以将逻辑值或文本型数字强制转换为数值比如 N(B2) 在B2是“文本型数字”时仍然返回0而不是报错这可以帮你监控数据源里混进了一些非数值格式。4. 常见问题与排查技巧实录4.1 环比分母为0如何看都像“暴跌”这是最经典的报表事故上期是0本期哪怕只有1增长率算出来就是无穷大反过来上期是100本期直接降到0增长率为-100%业务上确实要关注但很多时候这种剧烈波动只是季节性产品退市还是需要结合绝对值一起看。我习惯在环比同比旁边额外加一列“绝对值差额”B2-B1这样读者既不丢失“率”的感知也不会被“百分号”完全带偏。领导看报表时先看绝对值再看增长率能少很多误判。4.2 同比去年同期是0增长率直接崩和上面类似但同比数据里出现0更可能是口径问题。比如某产品去年这个月还没上市同比的基数自然为0。这种时候算出来的增长率没有任何业务意义要么显示“去年未上市”的标注要么干脆用“绝对增量”表达。处理方案IF(去年同期值0, 基数为0, (本期值-去年同期值)/去年同期值)4.3 日期格式错乱导致SUMIFS匹配不到值最常见的是日期存成了文本格式。看起来单元格里是“2024/2/1”但事实上它是文本用DATE函数构造的日期去匹配就永远匹配不上。排查方法用 ISNUMBER(A2) 检查日期列是否为数值用 ISTEXT(A2) 检查是否为文本。最快速的修复方式选中日期列使用“分列-下一步-下一步-日期格式YMD”把文本日期一次性转成真日期。4.4 隐藏行或筛选模式下公式出错如果你在筛选状态下使用SUM得到的是“所有未筛选行的合计”而不是“当前可见行的合计”。要计算筛选后的合计需要用SUBTOTAL函数第一个参数用109代表求和。同比环比本身是基于具体固定单元格的引用筛选不影响公式结果但如果你对筛选后的临时结果做进一步计算要留意SUBTRACTOTAL和SUM之间的差异。4.5 比较两个时间段的销售跨年期间的环比怎么处理比如你要算“1月对比12月”12月是去年1月是今年直接在Excel里用相对行偏移可能偏移到了其他行或者空行。这时候用EOMONTH函数动态构造上期月份范围会稳妥很多。4.6 负数利润的环比怎么算如果上期利润是负数比如-50万本期是-30万确实是在变好但用标准公式算出来的环比增长率却是负数读者看了会懵。更合理的处理是计算“亏损收窄幅度”比如 (本期-上期)/ABS(上期)这样-30万对比-50万结果是 ( (-30)-(-50) )/50 40%表示亏损收窄40%。注意这里的分母是ABS(上期)不是上期原值。这个技巧在财报分析里非常常用需要单独备注口径说明。5. 数据呈现与汇报技巧算出结果还要让人看懂5.1 同比环比怎么看增长率搭配绝对值算出了环比和同比不等于分析做完了。很多报表里列了一长串百分比结果阅读者根本不知道哪些数据重要。比较好的做法是把“增长率”和“绝对值”放一行用底色或图形辅助标记上下箭头和升降区间。5.2 单元格自定义格式让正负/增减一目了然用自定义格式可以实现“自动显示箭头和颜色”不额外占用列。方法选中百分比单元格按 Ctrl1在自定义格式中输入类似 [绿色]▲0.0%;[红色]▼0.0%;0.0% 的代码。这里我用的是传统红绿配色行业里也有用红涨绿跌的看团队习惯重点是在不需要额外列的情况下报表升级一个档次。提醒一句自定义格式里直接塞“▲”“▼”字符在某些系统字体里可能显示不全稳妥做法是单独加一列用IF判断返回“↑”“↓”文本或者用条件格式加图标集。5.3 条件格式按增长率区间自动标色选中同比和环比的增长率列设置“条件格式-色阶”或者“图标集”。这样每个月报表数据更新后颜色自动变化不需要手动维护。注意地点色阶只适合展示连续的相对大小不适合判断达标与否如果就是想标“增长超过20%”用新建规则写公式更准确。5.4 图表选择柱状图折线图组合最直观同比环比一般配合展示“绝对值趋势 增长率曲线”。做法先画一个柱状图展示每个月的销售额然后把增长率这一列加进来更改图表类型为折线图设置到次坐标轴。这样一眼看到整体量级和变化速度。如果希望更直观地展示增长或下降还可以用涨跌柱辅助展示。5.5 把多个指标放到一个日报/月报模板里模板化是数据分析师自保的最好手段。把原始数据、汇总数据、指标计算、图表展示这四个模块分层放在不同工作表里每月只更新“原始数据”这一张表其余全部自动刷新。第一次搭建时多花半小时之后每个月至少省两小时。6. 高级进阶数据分析效率倍增的模板化思路6.1 用Excel表格动态范围告别“每月改公式”如果原始数据工作表的区域不是固定大小每月新增几行传统公式引用的区域范围可能不够用。在这个场景下将数据区域定义为“Excel表格”快捷键CtrlT是最简单的解法。表格支持自动扩展公式引用表格名称如“表1[销售额]”时新增行后公式自动覆盖新数据。6.2 用Power Query实现月度数据自动追加每次有新数据把文件放到固定文件夹刷新“数据源”工作表Power Query会自动把新增行合并进主表。这个设计适合月度数据文件格式统一的场景。我不建议强行给初学者推Power Query但一旦接触你会发现处理重复性Excel工作远比自己手动复制粘贴省力。6.3 常见模板设计建议布局思路原始数据页只需要字段日期、业务维度、数值。指标计算页放基础表和公式计算不要手动输入数值。展示页只放图表和关键指标提供“下拉选择月份业务维度”的交互让领导自己筛选。做到这个程度你已经把一个“计算表”升级成了“半自动化分析看板”。6.4 进阶函数组合案例同比自动匹配实例目标有一张月度销售汇总表列结构为“年份 月份 销售额”。在C列计算同比D列计算环比。原始数据假设前几行数据年份月份销售额20231100202321202024113020242150D列环比公式从第3行开始也就是2024年1月那行(C3-C2)/C2C列同比公式第3行的去年同期为第2行的100(C3-SUMIFS(C2:C100, A2:A100, A3-1, B2:B100, B3))/SUMIFS(C2:C100, A2:A100, A3-1, B2:B100, B3)SUMIFS的作用是查找“年份 当前年份-1 且 月份 当前月份”的销售额。年份在A列月份在B列。这个方法的优势在于数据不要求12行连续排列中间缺月份也不影响匹配结果。如果用的是Excel 365可以改用XLOOKUP配合连接键XLOOKUP((A3-1)-B3, YEAR(数据区域日期)-MONTH(数据区域日期), 数据区域销售额, 0)不过XLOOKUP搭配数组公式需要动态数组支持老版本跑不起来所以我通常默认教SUMIFS方案兼容性更好。6.5 动态环比自动匹配上一期同比匹配的是“去年同期”环比匹配的是“上一个有数据的月份”。两者在纯数据表里会有细微差异。用公式实现时需要先对数据按月排序然后查找“日期小于当前月份的最大日期”这可以直接用MAXIFS实现MAXIFS(A2:A100, A2:A100, A3)有了上一期日期后再结合SUMIFS取数值。这套组合在数据有缺失月份时尤其好用不会因为缺了一个月就错位。7. 我的实操心得与避坑清单最后把自己这几年做Excel分析踩过的坑做个总结。也不知道该管这叫经验还是教训总之每一条都真实发生过。第一永远先统一日期格式再做计算。凡是拿到原始数据第一件事就是看日期列是不是真正的日期。看到文本日期或者“2024年2月”这种格式直接先转格式不要急着写公式。第二环比和同比不要用一个公式走天下。两种指标的数据获取逻辑不同尤其有缺失月份、产品新上市、门店新开张时同比和环比的基准会完全不同。在同一套模板里做两个独立的计算字段各算各的别省事。第三百分比格式至少保留两位小数。默认一位小数在数据差异很小时会显示成0%容易让人误判“没变化”。领导问“怎么全是0%”多半就是这个原因。第四一定要多放一个绝对值列。任何增长率脱离了绝对值都可能误导人。增长100%可能只是从1万变2万绝对增量小到没有讨论价值。放在一起展示分析维度才完整。第五公式写得再复杂最后一定要人工抽查几行。我见过太多模板公式逻辑正确但原始数据里藏着合并单元格、空行、隐形字符导致结果局部出错的情况。每个月报表生成后随机找两到三个月份用手工核算一遍成本极低收益极高。关于Excel算环比同比这件事说到底不是公式难而是你愿不愿意把数据基础做扎实、把口径定义清楚、把结果多验证一遍。把这些基本功练好了后续无论是做月报、周报、还是临时分析都会省力很多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑