☰
Excel均值曲线制作:AVERAGEIF、移动平均与折线图实战
2026/10/2 3:23:36 网站建设 项目流程

1. 均值曲线到底是个什么东西

先把概念说清楚。均值曲线,本质上就是把一组或多组数据的平均值用折线的方式画出来,让人一眼看出"整体水平在往哪走"。它跟普通折线图最大的区别在于,普通折线画的是每一条原始数据,而均值曲线画的是这些数据算完平均之后的那个"代表值"。比如你手上有12个月的销售额,每个月又有几十笔订单,直接把几百个点画上去会乱成一团麻,但如果先按月份把订单金额求平均,再画12个点连成线,趋势立马就干净了。

为什么日常工作中这个东西出现频率这么高?因为绝大多数汇报场景要的不是细节,而是"整体在涨还是在跌"。老板不关心3月17号那笔单子卖了多少钱,他关心的是3月整体对比2月是不是更好。均值曲线就是干这个的,它把噪声压掉,把信号提出来。

在Excel里做均值曲线,门槛其实非常低,低到什么程度?你不需要会VBA,不需要装任何加载项,不用碰Python,只要会写一两个函数、会点"插入折线图",十分钟就能出第一版。但它又不像看起来那么简单,"平均值"这三个字背后有一堆坑:是简单平均还是加权平均?是每个时间点取一次平均还是按滚动窗口算移动平均?算出来的结果该用什么图表类型呈现才不会被误读?这些问题如果不想清楚,做出来的图不仅不能说明问题,还可能误导决策。

这篇内容适合几类人:经常要做周报月报、需要用图表汇报数据的职场人;在做数据分析练习、想搞明白Excel图表逻辑的学生;还有那些被"均值曲线"这个词卡住、不知道从哪下手的朋友。我会从思路设计一路讲到实操细节,把参数怎么算、图怎么调、崩了怎么救都写清楚,尽量让你看完就能打开Excel自己复现一遍。

有一点提前说明:本文提到的所有函数、操作路径都以主流桌面版本Excel为准。Mac版Excel在个别菜单的位置上会有些差异,涉及的地方我会单独标注,避免你照着Windows的截图在Mac上找不到按钮。

2. 整体设计思路与方案选型

2.1 先想清楚"均值"是按什么维度算的

动手之前,第一件事不是打开软件,而是问自己:这条均值曲线的横轴是什么,纵轴是什么,每一个点代表哪一批数据的平均。这个决定直接决定了你后面函数怎么写。

常见的三种维度结构是这样的。第一种是"时间点均值",横轴是月份或季度,每个点代表该时间段内所有记录的均值,这是最常见的一种,做月度趋势、季度对比都用它。第二种是"分组均值",横轴是类别,比如不同门店、不同产品线,每个点代表该类别的平均表现,用来看谁高谁低。第三种是"滚动均值",横轴还是时间,但每个点代表的是"从当前往前数N期"的一个滑动窗口平均值,专门用来平滑波动,做趋势判断时特别有用。

这三种在Excel里的实现难度是递增的。第一种用AVERAGEIF或者数据透视表就能搞定,五分钟的事;第二种跟第一种基本一样,只是分类维度不同;第三种稍微麻烦一点,早期版本要靠AVERAGE+OFFSET组合,新版直接有AVERAGEIFS配合动态范围,或者干脆用数据透视表的"移动平均"功能一键生成。

我个人的建议是:如果你只是想汇报"这个月比上个月好还是差",用第一种就够;如果你想看"去掉季节性波动后的大趋势",那必须上第三种。选错了维度,后面图画得再漂亮也是白搭。

2.2 为什么推荐"辅助列+折线图"而不是直接画

Excel里有一条捷径叫组合图表,可以把原始数据画成柱状、把均值画成折线,一步到位。听起来很省事,但我很少直接用它,原因有三个。

第一,可控性差。组合图表的均值线是Excel自动算的,你没法干预它的计算口径,比如你想用中位数代替平均值就做不到。第二,调试困难。一旦数据源有变动,图上那条线可能悄悄变了,你不容易第一时间发现。第三,复用性差。下次换个数据集,你还得重新配置一遍图表类型和次坐标轴,浪费时间。

辅助列的做法是:先在数据表旁边单独算出一列"均值",把结果固定成实实在在的数值,然后用这一列去插入普通的折线图。这样做的好处是所有计算过程都看得见、改得动、查得到。数据源更新了,辅助列跟着变,图也跟着变,逻辑清晰。坏处就是多一步操作,但这一步换来的是完全的可控性,非常值。

2.3 数据源该长什么样

辅助列能不能顺利拖出结果,取决于你的原始数据表够不够"规整"。所谓规整,就是满足下面这几条:

  • 第一行是列标题,且只有一个标题行,不要有合并单元格的"大标题"横在上面
  • 每一列只放一种信息,日期列就是日期,金额列就是金额,不要一列里混着文字和数字
  • 不要有空行空列穿插在数据中间,Excel会自动识别连续区域,中间断一下它就只认一半
  • 所有日期格式统一,要么都是"2025/1/1"这种,要么都是标准日期值,不要一半文本一半日期

我见过太多人卡在最后一步图上不来,回头一查,问题都出在数据源上:要么标题行被合并了,要么某列里混进了"合计"两个字。花五分钟把数据表整理干净,能省掉后面半小时的排查时间,这笔账怎么算都划算。

提示:整理数据时,先选中整列,用"数据-分列"或"查找替换"清理格式,比一个个手改快得多。

3. 核心细节与函数实操要点

3.1 AVERAGEIF:最常用的时间点均值

假设你的数据是这样两列:A列是日期,B列是销售额,你想按月份算平均。最简单的做法是在另一个区域列出月份,比如E2是"1月",然后用下面这个公式:

=AVERAGEIF($A$2:$A$500,"*1月*",$B$2:$B$500)

如果A列是标准日期而不是文本,就不能用通配符了,得用范围条件:

=AVERAGEIFS($B$2:$B$500,$A$2:$A$500,">="&DATE(2025,1,1),$A$2:$A$500,"<="&DATE(2025,1,31))

这里有个关键点必须说清楚:AVERAGEIF的条件区域和求和区域行数必须对齐,否则结果会错位但不报错,这是最阴险的坑之一。它的原理是按行号一一对应去匹配,一旦区域大小不一致,Excel会默默按左上角对齐,算出来的数看着合理,其实全是错的。

还有个细节,AVERAGEIF在找不到匹配项时会返回#DIV/0!错误,因为它相当于用0除以0条记录。如果你不想看到一片红,可以套一层IFERROR:

=IFERROR(AVERAGEIF($A$2:$A$500,"*1月*",$B$2:$B$500),"")

这样没数据的月份会显示空白,图上也就不画点,避免出现掉到0的误导性折线。

3.2 AVERAGEIFS:多条件筛选下的均值

当条件不止一个,就必须换AVERAGEIFS。它的语法是AVERAGEIFS(平均值区域, 条件区域1, 条件1, 条件区域2, 条件2, ...),注意第一个参数是平均值区域,跟AVERAGEIF正好相反,很多人第一次用都会写反。

举一个实际的例子:你要统计每个门店每个月的平均客单价,条件就是"门店=某店"且"月份=某月":

=AVERAGEIFS($D$2:$D$1000,$B$2:$B$1000,$G2,$C$2:$C$1000,H$1)

这里$G2是门店名,H$1是月份,公式往右往下拖就能铺满整张交叉表。这种写法本质上是手工搭了一个简易数据透视表,好处是结果直接落在单元格里,方便你继续加工。

参数怎么填有个记忆办法:AVERAGEIFS里所有条件区域的尺寸必须完全一致,且都要跟第一个平均值区域的行数对齐。你可以在编辑时选中公式里的区域部分按F4切换绝对引用,拖公式时就不会乱跑。

3.3 移动平均:靠OFFSET做滚动窗口

滚动均值要的是"最近3期平均"这种效果。用OFFSET配AVERAGE可以做到,思路是让窗口跟着当前行往下滑:

=AVERAGE(OFFSET($B$2,ROW()-2,0,3,1))

这段公式的意思是:从B2开始,往下偏移ROW()-2行,取3行高、1列宽的范围求平均。当公式在第3行时,ROW()返回3,偏移1行,取到B3:B5;在第4行时取B4:B6,以此类推。每往下拖一行,窗口就整体下移一行,效果就是3期滚动平均。

用OFFSET有两个必须注意的地方。一是公式里ROW()-2这个偏移量要跟你数据起始行对齐,如果数据从第3行开始,就得改成ROW()-3。二是OFFSET是易失函数,整列几千行都用它,表格会明显变卡。数据量大的时候,更好的选择是用数据透视表的"值显示方式-移动平均",让Excel内部去算,性能好很多。

3.4 图表类型怎么选才不被误读

均值算出来了,接下来是画图。这里有个经常被忽略的细节:数据的性质决定了该用哪种图。

如果横轴是时间,纵轴是数值,用折线图,这是趋势类的标准选项。如果横轴是类别,比如门店名,那用柱状图其实是更好的选择,因为类别之间没有连续性,画成折线会给人一种"从A店滑到B店"的错觉。如果同一张图上既要展示原始数据的分布、又要展示均值趋势,那就用组合图:原始数据用细线或者淡色散点铺底,均值用较粗的深色折线压在上面,视觉主次一目了然。

还有一个反直觉的点:当数据点很少的时候,比如只有3个季度,折线图会显得很空,这时候柱状图往往比折线更合适,因为它每个柱子的高度本身就有"量"的感觉,不会像折线那样让人去脑补中间的过渡。

注意:均值曲线的平滑性会给人"数据很稳"的错觉,如果原始数据波动极大,务必在图上补一个误差范围或者把原始点也画上去,否则容易被质疑选择性展示。

4. 从零到一的完整实操过程

4.1 第一步:搭一张干净的数据表

我拿一个模拟的场景来走一遍,你跟着做就能复现。假设是一家连锁店2025年上半年的日销售记录,A列是日期,B列是门店名,C列是销售额,一共300多行。

先把表头固定好:A1填"日期",B1填"门店",C1填"销售额"。然后选中A列整列,按Ctrl+1打开单元格格式,把日期设成"yyyy/mm/dd"。选中C列,设成数值、保留两位小数。这一步看着繁琐,但能避免后面因为格式混乱导致条件匹配失败。

接着检查有没有空行。用Ctrl+End跳到数据末尾,看看是不是在最后一行,如果跳到了很下面说明中间有空行,用定位(Ctrl+G)-定位条件-空值找出来处理掉。这张表就是后续所有操作的根基,它干净,后面每一步都顺。

4.2 第二步:用数据透视表快速得到月度均值

很多人不知道,算月度均值最快的方法其实不是写函数,而是数据透视表。

操作路径是:选中数据区域,插入-数据透视表-确定。然后在字段列表里,把"日期"拖到"行",把"销售额"拖到"值"。这时默认是求和,双击"值"区域的"求和项:销售额",在弹窗里把计算类型改成"平均值",确定。如果你想要按月分组,右键行区域的任意日期-组合-选择"月",它就会自动按月份聚合。

不到一分钟,月度均值就出来了,而且不用写一行公式。透视表的好处是会自动忽略空值和文本,也不会有区域对齐的问题。缺点是它的结果是动态的,原始数据一变它跟着变,如果你需要固定数值去画图,得先复制-选择性粘贴成数值。

对于第一次做这个图的人,我非常推荐先走透视表这条路,因为它帮你把"均值是多少"这个结果先拿到手,你心里有个数,再回头用公式去复现,就能验证自己的公式写没写对。

4.3 第三步:用辅助列复现同样的结果

透视表虽然快,但它依赖刷新,而且格式固定的场景下改起来不如公式直观。所以我们用AVERAGEIFS在旁边的空白区域手工搭一份。

在E1到E6分别填1月到6月(或者直接用日期),F1写上"平均销售额"。在F2输入:

=IFERROR(AVERAGEIFS($C$2:$C$400,$A$2:$A$400,">="&DATE(2025,ROW()-1,1),$A$2:$A$400,"<="&DATE(2025,ROW()-1,31)),"")

这里用ROW()-1作为月份号,拖动时自动变化。但要注意,每个月的最后一天不一样,2月没有31号,用DATE(2025,2,31)会被Excel自动换算成3月3日,导致数据串到3月去。稳妥的做法是改用EOMONTH函数算出月末:

=IFERROR(AVERAGEIFS($C$2:$C$400,$A$2:$A$400,">="&DATE(2025,ROW()-1,1),$A$2:$A$400,"<="&EOMONTH(DATE(2025,ROW()-1,1),0)),"")

这样不管哪个月,上界都是那个月真正的最后一天。这是我踩过坑之后才改过来的写法,早期用31号当上界,做2月的均值总是偏高,查了半天才发现是日期越界了。

4.4 第四步:插入折线图并调格式

F列算完,选中E1:F7这块区域,插入-折线图-带数据标记的折线图。这时候会出来一条基本成型的曲线,但还比较粗糙,需要做几处调整。

第一处是横轴。默认它会显示成"1、2、3……"这种序列号,你要右键横轴-设置坐标轴格式-坐标轴选项,如果是文本月份它会自动显示,如果是日期就要设置成"文本坐标轴"避免按日期比例拉开间距。

第二处是纵轴起点。默认Excel从0开始,但均值数据往往集中在某个区间,从0开始会让曲线看起来太平。这时候可以适当调高纵轴最小值,比如数据在800到1200之间,起点设成700。但要克制,不要为了"显得有波动"把起点设得离数据很近,那是典型的误导性图表。

第三处是标记点和线条。均值点建议用实心圆点、线宽1.5到2磅,颜色用一个明显的深色。数据标签可以打开,显示具体数值得保留两位小数,报告里方便引用。

做完这几步,一条干净的均值曲线就出来了。整个过程算式几分钟,图表调整几分钟,加起来不会超过十五分钟。

4.5 第五步:加上原始数据做对照

如果这张图是要拿去做汇报的,我强烈建议把原始数据也放上去。做法是:选中原始数据列,复制,然后在图表上右键-选择数据-添加系列,把它加进来,改成散点图或细折线,颜色调淡、线条调细,让它作为背景层存在。

这样做的价值在于,一是你展示了完整的证据,别人不能说你藏数据;二是观众能直观看到均值的代表性有多强。如果原始点非常集中,均值线就有说服力;如果原始点极其分散,均值线旁边你就得加一句解释,说明分布情况。

4.6 Mac版的操作差异

如果你用的是Mac版Excel,上面几个步骤有细微差别。插入图表的入口在"插入"选项卡里,位置和Windows基本一致,但右键菜单的"设置坐标轴格式"可能叫"设置坐标轴格式窗格",展开方式不同。数据透视表的组合月份功能在部分Mac版本里藏得比较深,可能需要先在行标签上右键找"组合"。公式部分两边是完全一致的,不用担心函数写法有区别。

5. 常见故障与排查实录

5.1 公式算出来全是错误值

最常见的原因是条件区域和求和区域行数不一致。比如平均值区域写的是$B$2:$B$400,而条件区域写成了$A$2:$A$500,行数不匹配,Excel不会报错,但结果全是乱的。排查方法简单:把两个区域选中对比一下,看状态栏显示的行数是否一样。

第二个原因是日期匹配失败。如果A列是文本格式的"2025年1月",而你条件里写的是标准日期DATE(2025,1,1),永远匹配不上。解决办法是统一格式,要么把A列转成真日期,要么在条件里也写文本。

第三个原因是引用了错误的绝对/相对引用。拖公式时区域跟着跑了,可以按F4把关键区域锁死成绝对引用。

5.2 图表上新出现的点掉到了0

典型症状是某个月没数据,均值返回错误值,但你前面没套IFERROR,或者套了但IFERROR返回的是0而不是空字符串。如果是0,折线就会从上个月直接垂到0,画出来一条刺眼的直线。检查方法是在辅助列上看有没有#DIV/0!,有的话确认IFERROR的第二个参数写的是""而不是0。

5.3 曲线看起来太"抖"或太"平"

太抖通常是因为用了原始数据直接画,没做均值或者分组不够粗。太平则可能是求均值时把不同量级的数据混在一起了,比如把几家大店和小店的销售额一起平均,大户把均值拉高,小店的变化被淹没了。解决办法是分组,按门店或按规模分层,每个层级画一条均值线。

5.4 表格一改数据图表就不更新

这几乎肯定是图表引用的区域没覆盖到新数据。检查方法:右键图表-选择数据,看系列引用范围是不是只到原来的最后一行。如果是,要么把引用区域改成整列(比如$F$2:$F$1000留足余量),要么把数据转成表格(Ctrl+T),Excel会自动扩展引用。

下面这张表可以当成速查用:

症状可能原因排查动作
均值结果全是错误区域行数不一致对比两区域状态栏行数
日期条件匹配不上文本与日期格式混用统一格式或用文本条件
折线掉到0IFERROR返回0而非空改第二参数为""
图不随数据更新引用范围没覆盖新行改整列引用或用表格
曲线过于平缓数据分层未做按分类拆开分别求均值
透视表结果不对未按需求改聚合方式双击值字段改为平均值
表格卡顿OFFSET等易失函数过多改用透视表移动平均

5.5 打印和导出时图变形

有人做好的图在屏幕上看着挺好,打印出来发现横轴标签被截断、曲线被压扁。原因是打印区域的宽高比和屏幕不同。解决办法是在页面布局里先设好纸张方向和页边距,然后用"调整为1页宽1页高"约束,或者干脆把图表单独放到一个新建工作表里导出。导出图片的时候用"复制为图片"比直接截图清晰得多。

5.6 一个容易被忽略的坑:重复值会不会被算两次

AVERAGEIF系列函数会对所有满足条件的单元格求平均,如果你同一笔记录在表里出现了两次(比如从两个系统导出来合并时没去重),它会被算两次。均值本身可能影响不大,但如果这笔数据的量级比较极端,就会明显带偏结果。做完数据后记得用"数据-删除重复值"清理一遍,或者用COUNTIFS辅助检查重复条数。

6. 几个能让图表更专业的实操心得

6.1 用条件格式给均值列加预警

均值算出来了,光看数字不直观。可以选中均值列,用条件格式-数据条或者色阶,让高的绿、低的红,一眼就能看出哪个月拉了后腿。这个技巧在透视表里同样适用,而且不占用图表空间,特别适合放在辅助区域做内部参考。

6.2 给曲线加基准线

如果这个均值有一个目标值,比如"月均销售额要达到1000才能保本",可以在图上加一条水平参考线,让观众一眼看到哪些月份在目标之上。做法是:添加一个新系列,X值就是你的横轴标签,Y值全部填同一个目标数,然后把这个系列改成没有标记点的直线,颜色用灰色虚线。比直接画条形状稳当,因为数据变动时它跟着动。

6.3 数据量大的时候优先选透视表

我前面推荐辅助列是因为可控,但当数据量到几万行的时候,几千个AVERAGEIFS公式叠加上去,Excel会明显卡顿。这种情况下的正解是用数据透视表,或者更彻底一点,把原始数据挪到Power Query里预处理,加工成月度的汇总表再画图。Power Query的好处是刷新一次全自动,不用维护公式。

6.4 保留一份"数据说明"工作表

这是很多人在团队协作里吃过亏才养成的习惯。在同一份文件里多开一个工作表,写清楚这几件事:数据来源、统计口径、均值是按什么维度算的、有没有剔除异常值、更新日期。别人接手你的文件时不用猜,你自己过两周回头看也记得住。这不是多此一举,而是专业和业余的分水岭。

6.5 关于异常值到底要不要剔除

这里没有标准答案,但有几个判断原则。如果异常值是录入错误,比如多了个0,直接删掉或者修正。如果是真实的极端事件,比如某天有大型团购,那要看你的汇报目的:做趋势判断可以剔除,做总量预测必须保留。无论怎么选,都要在图注里说明,不能悄悄处理。我个人的做法是同时准备两条线,一条含异常值、一条不含,放在同一张图上对比,把选择权交给看的人。

6.6 均值之外的另一个视角

均值有个众所周知的弱点:会被极端值拉偏。如果你的数据分布很不对称,均值线可能代表不了"典型水平"。这时候可以顺手把中位数也算一列,画在同一个图上做对比。如果两条线走势一致,说明数据比较对称,均值的代表性就强;如果两条线分岔,那就要小心了,汇报时最好用中位数,或者两个都给出。这个细节看起来小,但在严谨的数据分析场合,往往是加分项。

我自己做这类图表做了很多年,最大的体会是:工具层面的东西很快就能学会,真正拉开差距的是想清楚"这个数代表什么、给谁看、会不会被误读"。均值曲线这个工具本身不复杂,但把它用对、用稳、用出说服力,需要你在动手之前多花几分钟想清楚口径,在动手之后多花几分钟检查边界条件。数据表、公式、图表这三层里,最容易出问题的永远是你看不见的那一层——也就是你默认它没问题、没去验证的那一层。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询