第 7 章

数学与统计函数——让数据开口说话

第7章:数学与统计函数

数字是职场语言中最有说服力的部分——销售排名、成本占比、异常数据检测、加权平均分……这些分析背后,是一组被严重低估的 Excel 统计函数。本章系统梳理 ROUND 系列、RANK、LARGE/SMALL、RAND、SUMPRODUCT 以及常用数学函数,每个函数配合职场真实场景和完整 AI Prompt 案例,帮你把数字分析的效率提升一个量级。

统计函数的职场价值

很多人在 Excel 里处理数字时,只用 SUM 和 AVERAGE,顶多加一个 COUNT。但职场中真正有价值的数字分析,往往需要更精细的工具:

**排名与竞争分析:**销售部门每周出的销售排名,看似简单,实则有讲究——并列第一怎么处理?分组内排名(每个区域各自排名)怎么实现?这些 RANK 函数都能搞定。

**占比与异常检测:**某产品销售额占总销售额的比例是多少?某员工的绩效分数处于所有人的第几百分位?哪些数据点明显偏离正常范围?统计函数的核心价值就在这里。

**数据清洗前的质量分析:**一批数据里有没有异常值?最大值和最小值是否合理?LARGE 和 SMALL 让你快速定位数据分布的两端。

**复杂聚合计算:**多条件求和、加权平均、不重复值计数——这些 SUMPRODUCT 一个函数全部能处理,而且比嵌套函数更高效、更灵活。

统计函数的本质,是把你对数据的业务理解,翻译成计算机能执行的逻辑。AI 能帮你完成翻译这一步,但业务理解要靠你自己。

四舍五入系列:ROUND / ROUNDUP / ROUNDDOWN / MROUND / INT / TRUNC

这六个函数都处理"数字精度"问题,但各有适用场景,混用会出错:

函数 规则 对 2.567 保留2位 对 -2.567 保留2位
ROUND(数,位数) 四舍五入(标准) 2.57 -2.57
ROUNDUP(数,位数) 无论如何向上取整 2.57 -2.56(远离0)
ROUNDDOWN(数,位数) 无论如何向下取整 2.56 -2.56(趋近0)
MROUND(数,基数) 取最接近基数倍数 MROUND(2.567,0.5)=2.5 -
INT(数) 向下取整到整数 2 -3(往更小方向)
TRUNC(数,位数) 直接截断(不四舍五入) 2.56 -2.56(趋近0)

⚠️ Warning

INT vs TRUNC 的关键区别:

对正数,INT 和 TRUNC 结果相同。对负数,INT(-2.3) = -3(向下取整,更小),TRUNC(-2.3) = -2(截断,趋近0)。处理负数时要特别注意选哪个。

案例1:财务金额保留2位小数(ROUND) 场景:财务报表中,计算结果经常产生很多小数位(如 1234.5678),需要统一保留2位,遵循标准四舍五入规则。

帮我保留两位小数
=ROUND(A2,2)

为什么不能只设置格式:
Excel的单元格格式只影响显示,不影响实际存储值。
比如 1.235 显示为 1.24,但参与后续计算时用的还是 1.235。
在财务场景中,多个这样的"假精度"数值连续相加,会出现"合计对不上"的问题。
ROUND函数才是真正改变了数值本身,后续计算都以 1.24 为准。

案例2:向上取整计算包装数量(ROUNDUP) 场景:客户订购了 127 件产品,每箱装 12 件,需要计算需要准备多少箱(不够一箱也要按一箱准备)。

=ROUNDUP(A2/12,0)
(A2=127时,127/12=10.583,ROUNDUP后=11)

或者用CEILING函数(Excel 2010+):
=CEILING(A2,12)/12
(直接求需要多少箱,不用先除后取整)

案例3:折扣价始终向下取整(ROUNDDOWN) 场景:产品原价 199 元,打 8.5 折,得到 169.15 元。公司规定折后价必须向下取整到整元(不允许四舍五入进上去让顾客多付)。

=ROUNDDOWN(A2*0.85,0)
(199*0.85=169.15,ROUNDDOWN到0位=169)

案例4:按 0.5 元进行四舍五入(MROUND) 场景:超市价签只支持 0.5 元精度(如 3.0、3.5、4.0),计算出的成本加价后需要归整到最近的 0.5 元倍数。

=MROUND(A2,0.5)
示例:3.3→3.5,3.2→3.0,4.76→5.0,1.25→1.5

案例5:提取整数部分(INT vs TRUNC 区别) 场景:需要从单价中提取整数部分,分别对正数(168.75元)和负数(-168.75元,表示退款)做处理,理解两个函数的区别。

排名函数:RANK / RANK.EQ / RANK.AVG / PERCENTRANK

Excel 提供了多种排名方式,各有其使用场景:

=RANK.EQ(B2,$B$2:$B$20,0)
(第三参数0=降序/从高到低,1=升序/从低到高)

为什么要绝对引用$B$2:$B$20:
向下填充公式时,相对引用会跟着移动(B3:B21, B4:B22...),
导致每行都在和不同的数据集比较,排名错误。
$B$2:$B$20固定引用整个数据区域,无论公式在哪行,
都和同一批数据比较,排名才正确。

案例2:成绩百分位排名(PERCENTRANK) 场景:D 列是员工绩效评分,需要在 E 列显示每位员工的绩效分数处于所有人的第几百分位(如 0.85 表示比 85% 的人高)。

=PERCENTRANK($D$2:$D$50,D2,2)
(第三参数2=保留2位小数精度)

结果说明:
0.85 → 高于85%的员工
0.50 → 中位数水平
0.95 → Top 5%人才

案例3:动态排名(数据变化时自动更新) 场景:销售数据每天更新,排名需要实时反映最新结果,不能每次都手动重排。

案例4:AI 帮你实现分组排名(部门内排名) 场景:A 列是部门,B 列是销售额,需要在 C 列显示每位员工在自己部门内的排名(不是全公司排名)。

=COUNTIFS($A$2:$A$100,A2,$B$2:$B$100,">"&B2)+1

逻辑解析:
COUNTIFS统计与A2同部门($A列=A2)且销售额大于B2($B列>B2)的人数,
加1得到该员工的部门内排名。
比如华东区里有3人销售额高于你,你就是第4名(3+1)。

向下填充:A2和B2都是相对引用,会随行变化,
$A$2:$A$100和$B$2:$B$100用绝对引用固定比较范围,填充后正确。

处理并列:两人销售额相同时,两人排名相同(均为并列第X名)。

最值函数:MAX / MIN / LARGE / SMALL

MAX 和 MIN 你肯定用过——但 LARGE 和 SMALL 让你能找第 N 大/小值,以及更新版的 MAXIFS/MINIFS 支持条件筛选,才是分析利器。

案例1:找出 TOP3 销售(LARGE) 场景:B 列是销售额,需要在另外的单元格分别显示第1名、第2名、第3名的销售额数字。

第1名销售额:=LARGE($B$2:$B$50,1)
第2名销售额:=LARGE($B$2:$B$50,2)
第3名销售额:=LARGE($B$2:$B$50,3)

如果要动态显示(F1输入名次,F2显示对应销售额):
=LARGE($B$2:$B$50,F1)

案例2:排除最高最低的平均分(TRIMMEAN 妙用) 场景:比赛评分,10 位评委打分,去掉最高分和最低分后计算平均分(体育赛事标准做法)。

方案一(TRIMMEAN,最简洁):
=TRIMMEAN(B2:B11,0.2)
(0.2=去掉两端各10%,10个数去掉最高1个和最低1个)

方案二(手动计算,更灵活):
=(SUM(B2:B11)-MAX(B2:B11)-MIN(B2:B11))/8

推荐方案一,但TRIMMEAN的参数计算:
去掉比例=去掉总个数/总数据个数
去掉2个/10个=0.2(两端各10%)

案例3:找出第 N 小的数据(SMALL 用于预警) 场景:库存管理中,需要找出库存量最少的 3 个产品的库存数(用于优先补货决策)。库存在 C 列。

案例4:MAXIFS / MINIFS 按条件求最值 场景:销售数据中,A 列是地区,B 列是销售员,C 列是销售额。需要找出华东区销售额最高的值,以及华北区的最低值。

随机函数:RAND / RANDBETWEEN

随机函数在职场中有三个核心用途:抽奖、排班、生成测试数据。

⚠️ Warning

**注意刷新问题:**RAND 和 RANDBETWEEN 每次工作表重新计算时都会产生新的随机数(按 F9 手动触发,或任何单元格改动都会触发)。如果需要固定住一次随机结果,选中随机数单元格→复制→选择性粘贴→仅粘贴值,把公式替换为数值。

案例1:随机抽奖 场景:A 列有 50 名参与者姓名,从中随机抽取 1 名获奖者。

方法一:随机显示一个姓名(按F9刷新抽奖)
=INDEX($A$2:$A$51,RANDBETWEEN(1,50))

方法二:给所有人分配随机编号,再取最大或最小号对应的人
B列辅助列:=RAND()(每人一个随机数)
C列:=INDEX($A$2:$A$51,MATCH(MAX($B$2:$B$51),$B$2:$B$51,0))

案例2:随机排班 场景:5 名员工需要随机分配到一周 5 天的值班表,每人值班一天,不重复。

案例3:AI 帮你生成测试数据 场景:需要一批虚假的销售数据用于测试公式,不想手动输入。

我需要在Excel里生成100行测试数据,用于测试我的销售分析模板。需要的列:
- A列:随机销售员姓名(从["张伟","李娜","王强","刘洋","陈静"]中随机取)
- B列:随机地区("华东"/"华北"/"华南",每个地区概率大致相等)
- C列:随机销售额(5000到50000之间的整数)
- D列:随机日期(2024年全年,均匀分布)

请给我每列的Excel公式(第2行开始),以及如何用辅助表存放姓名和地区列表。

SUMPRODUCT——最强大的聚合函数

如果说 VLOOKUP 是 Excel 查找领域的王者,SUMPRODUCT 就是聚合计算领域的王者。它的名字容易让人误解(好像只是"乘积之和"),但它真正的能力是:在不需要 Ctrl+Shift+Enter 的情况下,直接处理数组运算。

SUMPRODUCT 的核心原理

SUMPRODUCT 把多个数组对应位置的值相乘,然后求所有乘积的和。

=SUMPRODUCT(数组1, 数组2, ...)
等效于:先把数组1和数组2对应位相乘,再把所有结果加总

但真正让 SUMPRODUCT 强大的用法,是把条件判断产生的 TRUE/FALSE(1/0)乘进去,实现灵活的条件聚合。

案例1:加权平均成绩 场景:学生综合成绩由三科构成,权重不同。语文40%(B列),数学40%(C列),英语20%(D列)。计算加权平均分。

案例2:多条件求和(替代 SUMIFS 的灵活写法) 场景:A 列是地区,B 列是产品类别,C 列是销售额。统计"华东区"+"A类产品"的总销售额。

SUMIFS方案(推荐,简洁):
=SUMIFS($C$2:$C$100,$A$2:$A$100,"华东",$B$2:$B$100,"A类")

SUMPRODUCT方案(更灵活,可处理复杂逻辑):
=SUMPRODUCT(($A$2:$A$100="华东")*($B$2:$B$100="A类")*$C$2:$C$100)

SUMPRODUCT方案的优势:
1. 条件可以是公式(如:($C$2:$C$100>1000))
2. 可以加OR逻辑(SUMIFS只支持AND)
3. 在Excel旧版本中可以替代SUMIFS
4. 更容易扩展到复杂条件

案例3:计算不重复值个数 场景:A 列有一批客户名称,其中可能有重复,需要统计实际有多少个不同的客户(去重后的数量)。

=SUMPRODUCT(1/COUNTIF($A$2:$A$100,$A$2:$A$100))

原理分解:
1. COUNTIF($A$2:$A$100,$A$2:$A$100)
   对每个单元格,计算该值在整列中出现的次数
   结果是一个数组,如[3,3,3,1,2,2,1...]
   ("张三"出现3次,对应位置都是3;"李四"出现1次,对应位置是1)

2. 1/COUNTIF(...)
   取倒数:出现3次的值,每个贡献1/3;出现1次的值,贡献1
   [1/3, 1/3, 1/3, 1/1, 1/2, 1/2, 1/1...]

3. SUMPRODUCT(...)
   把所有倒数加总:3*(1/3) + 1*(1/1) + 2*(1/2) = 1+1+1 = 3个不同值

注意:如果A列有空白单元格,需改为:
=SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100,A2:A100&""))

案例4:条件计数+求和一步完成 场景:统计华东区销售额超过 10000 元的订单数量,以及这些订单的总金额。一个 SUMPRODUCT 搞定两件事。

案例5:AI 帮你把复杂需求转为 SUMPRODUCT 场景:你有一个复杂的多条件聚合需求,但不知道怎么写公式。

我需要一个Excel公式完成以下计算,请用SUMPRODUCT实现:

数据结构(第2行到第200行):
- A列:地区(华东/华北/华南/华西)
- B列:产品类别(A类/B类/C类)
- C列:销售员(多人名字)
- D列:销售额(数字)
- E列:是否已回款("是"或"否"文本)

计算需求:
[在这里描述你的具体需求,越清楚越好]
例如:统计华东区和华南区中,A类或B类产品,且已回款(E列="是")的总销售额

请给我公式并逐步解释每部分的含义。

ABS / MOD / POWER / SQRT——常用数学函数

这四个函数使用场景相对专一,但在特定需求下极为有用:

函数 作用 示例 典型职场用途
ABS(数) 绝对值(去掉负号) ABS(-150)=150 差异分析:无论超出还是不足,只关注差距大小;=ABS(实际-预算)
MOD(数,除数) 取余数 MOD(7,2)=1 奇偶判断(MOD(行号,2)=0/1交替染色);周期性排班(MOD(天数,7)判断星期)
POWER(底数,指数) 幂运算 POWER(2,10)=1024 复利计算(本金*POWER(1+利率,年数));指数增长模型
SQRT(数) 平方根 SQRT(25)=5 风险模型(波动率=SQRT(方差));几何平均(需要开N次方时结合POWER)

ABS 实战:差异分析不区分超额/不足

差异绝对值分析 场景:B 列是预算,C 列是实际,需要在 D 列显示偏差金额(不管超出还是不足,都显示正数),在 E 列显示偏差方向(超出/不足)。

MOD 实战:奇偶行交替着色

在条件格式中输入以下公式,给偶数行加背景色(选中数据区域后添加规则):

=MOD(ROW(),2)=0

ROW() 返回当前行号,MOD(行号,2) 取除以 2 的余数,偶数行余数为 0,奇数行余数为 1,利用这个交替规律实现隔行染色。

统计函数速查表 + AI Prompt 模板

函数 用途 常用示例
ROUND(n,d) 标准四舍五入 =ROUND(A2,2)
ROUNDUP(n,d) 向上取整 =ROUNDUP(A2,0)
ROUNDDOWN(n,d) 向下取整 =ROUNDDOWN(A2,0)
MROUND(n,s) 按步长取整 =MROUND(A2,0.5)
INT(n) 取整(向下) =INT(A2)
TRUNC(n,d) 截断取整(趋近0) =TRUNC(A2,0)
RANK.EQ(v,ref,o) 标准排名(并列取小) =RANK.EQ(B2,$B$2:$B$20,0)
PERCENTRANK(ref,v) 百分位排名 =PERCENTRANK($D$2:$D$50,D2)
LARGE(ref,k) 第k大值 =LARGE($B$2:$B$50,1)
SMALL(ref,k) 第k小值 =SMALL($C$2:$C$100,1)
TRIMMEAN(ref,p) 去两端均值 =TRIMMEAN(B2:B11,0.2)
MAXIFS(max,rng,c) 条件最大值 =MAXIFS($C:$C,$A:$A,"华东")
MINIFS(min,rng,c) 条件最小值 =MINIFS($C:$C,$A:$A,"华北")
RAND() 0-1随机小数 =RAND()
RANDBETWEEN(lo,hi) 整数随机数 =RANDBETWEEN(1,100)
SUMPRODUCT(...) 数组乘积求和/条件聚合 =SUMPRODUCT((A2:A100="华东")*C2:C100)
ABS(n) 绝对值 =ABS(C2-B2)
MOD(n,d) 取余数 =MOD(ROW(),2)
POWER(b,e) 幂运算 =POWER(1+0.05,10)
SQRT(n) 平方根 =SQRT(A2)

通用 AI Prompt 模板:统计函数

✅ Tip

本章核心总结:

统计函数的本质是把业务逻辑翻译成计算规则。掌握了 ROUND 系列的场景区分、RANK 的绝对引用规则、LARGE/SMALL 的定位能力、SUMPRODUCT 的多条件聚合能力,你就拥有了处理绝大多数数据分析需求的工具箱。遇到不确定的场景,用上面的 Prompt 模板把需求说清楚,让 AI 帮你选函数、写公式、解释逻辑——人机协作,效率翻倍。

上一章 ← 第6章:日期时间函数 下一章 第8章:数据验证与下拉菜单 →

本章评分
4.6  / 5  (46 评分)

💬 留言讨论