编者语:Excel是办公室自动化中非常重要的一款软件,很多巨型国际企业都是依靠Excel进行数据管理。它不仅仅能够方便的处理表格和进行图形分析,其更强大的功能体现在对数据的自动处理和计算,然而很多缺少理工科背景或是对Excel强大数据处理功能不了解的人却难以进一步深入。编者以为,对Excel函数应用的不了解正是阻挡普通用户完全掌握Excel的拦路虎,然而目前这一部份内容的教学文章却又很少见,所以特别组织了这一个《Excel函数应用》系列,希望能够对Excel进阶者有所帮助。《Excel函数应用》系列,将每周更新,逐步系统的介绍Excel各类函数及其应用,敬请关注!
Excel的统计工作表函数用于对数据区域进行统计分析。例如,统计工作表函数可以用来统计样本的方差、数据区间的频率分布等。是不是觉得好像是很专业范畴的东西?是的,统计工作表函数中提供了很多属于统计学范畴的函数,但也有些函数其实在你我的日常生活中是很常用的,比如求班级平均成绩,排名等。在本文中,主要介绍一些常见的统计函数,而属于统计学范畴的函数不在此赘述,详细的使用方法可以参考Excel帮助及相关的书籍。
Excel函数精彩回顾 |
● Excel函数应用之函数简介 ● Excel函数应用之数学和三角函数 ● Excel函数应用之逻辑函数 ● Excel函数应用之文本/日期/时间函数 ● Excel函数应用之查询与引用函数 |
在介绍统计函数之前,请大家先看一下附表中的函数名称。是不是发现有些函数是很类似的,只是在名称中多了一个字母A?比如,AVERAGE与AVERAGEA;COUNT与COUNTA。基本上,名称中带A的函数在统计时不仅统计数字,而且文本和逻辑值(如TRUE 和 FALSE)也将计算在内。在下文中笔者将主要介绍不带A的几种常见函数的用法。
一、用于求平均值的统计函数AVERAGE、TRIMMEAN
1、求参数的算术平均值函数AVERAGE
语法形式为AVERAGE(number1,number2, ...)
其中Number1, number2, ...为要计算平均值的 1~30 个参数。这些参数可以是数字,或者是涉及数字的名称、数组或引用。如果数组或单元格引用参数中有文字、逻辑值或空单元格,则忽略其值。但是,如果单元格包含零值则计算在内。
2、求数据集的内部平均值TRIMMEAN
函数TRIMMEAN先从数据集的头部和尾部除去一定百分比的数据点,然后再求平均值。当希望在分析中剔除一部分数据的计算时,可以使用此函数。比如,我们在计算选手平均分数中常用去掉一个最高分,去掉一个最低分,XX号选手的最后得分,就可以使用该函数来计算。
语法形式为TRIMMEAN(array,percent)
其中Array为需要进行筛选并求平均值的数组或数据区域。Percent为计算时所要除去的数据点的比例,例如,如果 percent = 0.2,在 20 个数据点的集合中,就要除去 4 个数据点(20 x 0.2),头部除去 2 个,尾部除去 2 个。函数 TRIMMEAN 将除去的数据点数目向下舍为最接近的 2 的倍数。
3、举例说明:示例中也列举了带A的函数AVERAGEA的求解方法。
求选手Annie的参赛分数。在这里,我们先假定已经将该选手的分数进行了从高到底的排序,在后面的介绍中我们将详细了解排序的方法。
图1
二、用于求单元格个数的统计函数COUNT
语法形式为COUNT(value1,value2, ...)
其中Value1, value2, ...为包含或引用各种类型数据的参数(1~30个),但只有数字类型的数据才被计数。函数 COUNT 在计数时,将把数字、空值、逻辑值、日期或以文字代表的数计算进去;但是错误值或其他无法转化成数字的文字则被忽略。
如果参数是一个数组或引用,那么只统计数组或引用中的数字;数组中或引用的空单元格、逻辑值、文字或错误值都将忽略。如果要统计逻辑值、文字或错误值,应当使用函数 COUNTA。
举例说明COUNT函数的用途,示例中也列举了带A的函数COUNTA的用途。仍以上例为例,要计算一共有多少评委参与评分(用函数COUNTA),以及有几个评委给出了有效分数(用函数COUNT)。
图2
三、求区域中数据的频率分布FREQUENCY
由于函数 FREQUENCY 返回一个数组,必须以数组公式的形式输入。
语法形式为FREQUENCY(data_array,bins_array)
其中Data_array为一数组或对一组数值的引用,用来计算频率。如果 data_array 中不包含任何数值,函数 FREQUENCY 返回零数组。Bins_array为一数组或对数组区域的引用,设定对 data_array 进行频率计算的分段点。如果 bins_array 中不包含任何数值,函数 FREQUENCY 返回 data_array 元素的数目。
看起来FREQUENCY的用法蛮复杂的,但其用处很大。比如可以计算不同工资段的人员分布,公司员工的年龄分布,学生成绩的分布情况等。这里以具体示例说明其基本的用法。
以计算某公司的员工年龄分布情况为例说明。在工作表里列出了员工的年龄。这些年龄为 28、25、31、21、44、33、22 和 35,并分别输入到单元格 C4:C11。这一列年龄就是 data_array。Bins_array 是另一列用来对年龄分组的区间值。在本例中,bins_array 是指 C13:C16 单元格,分别含有值 25、30、35、和 40。以数组形式输入函数 FREQUENCY,就可以计算出年龄在 25岁以下、26~30岁、31~35岁、36~40岁和40岁以上各区间中的数目。本例中选择了5个垂直相邻的单元格后,即以数组公式输入下面的公式。返回的数组中的元素个数比 bins_array(数组)中的元素个数多 1。第五个数字1表示大于最高间隔 (40) 的数值(44)的个数。函数 FREQUENCY 忽略空白单元格和文本值。
{=FREQUENCY(C4:C11,C13:C16)}等于 {2;2;2;1;1}
图3
四、一组用于求数据集的满足不同要求的数值的函数
1、求数据集的最大值MAX与最小值MIN
这两个函数MAX、MIN就是用来求解数据集的极值(即最大值、最小值)。函数的用法非常简单。语法形式为 函数(number1,number2,...),其中Number1,number2,... 为需要找出最大数值的 1 到 30 个数值。如果要计算数组或引用中的空白单元格、逻辑值或文本将被忽略。因此如果逻辑值和文本不能忽略,请使用带A的函数MAXA或者MINA 来代替。
2、求数据集中第K个最大值LARGE与第k个最小值SMALL
这两个函数LARGE、SMALL与MAX、MIN非常想像,区别在于它们返回的不是极值,而是第K个值。语法形式为:函数(array,k),其中Array为需要找到第 k 个最小值的数组或数字型数据区域。K为返回的数据在数组或数据区域里的位置(如果是LARGE为从大到小排,若为SMALL函数则从小到大排)。
说到这,大家可以想得到吧。如果K=1或者K=n(假定数据集中有n个数据)的时候,是不是就可以返回数据集的最大值或者最小值了呢。
3、 求数据集中的中位数MEDIAN
MEDIAN函数返回给定数值集合的中位数。所谓中位数是指在一组数据中居于中间的数,换句话说,在这组数据中,有一半的数据比它大,有一半的数据比它小。
语法形式为MEDIAN(number1,number2, ...)其中Number1, number2,...是需要找出中位数的 1 到 30 个数字参数。如果数组或引用参数中包含有文字、逻辑值或空白单元格,则忽略这些值,但是其值为零的单元格会计算在内。
需要注意的是,如果参数集合中包含有偶数个数字,函数 MEDIAN 将返回位于中间的两个数的平均值。
4、 求数据集中出现频率最多的数MODE
MODE函数用来返回在某一数组或数据区域中出现频率最多的数值。跟 MEDIAN 一样,MODE 也是一个位置测量函数。
语法形式为MODE(number1,number2, ...)其中Number1, number2, ... 是用于众数(众数指在一组数值中出现频率最高的数值)计算的 1 到 30 个参数,也可以使用单一数组(即对数组区域的引用)来代替由逗号分隔的参数。
5、 以上函数的示例
以某单位年终奖金分配表为例说明。在示例中,我们将利用这些函数求解该单位年终奖金分配中的最高金额、最低金额、平均金额、中间金额、众数金额以及第二高金额等。
详细的公式写法可从图中清楚的看出,在此不再赘述。
图4
五、用来排位的函数RANK、PERCENTRANK
1、一个数值在一组数值中的排位的函数RANK
数值的排位是与数据清单中其他数值的相对大小,当然如果数据清单已经排过序了,则数值的排位就是它当前的位置。数据清单的排序可以使用Excel提供的排序功能完成。
语法形式为RANK(number,ref,order) 其中Number为需要找到排位的数字;Ref 为包含一组数字的数组或引用。Order为一数字用来指明排位的方式。
如果 order 为 0 或省略,则Excel 将 ref 当作按降序排列的数据清单进行排位。
如果 order 不为零,Microsoft Excel 将 ref 当作按升序排列的数据清单进行排位。
需要说明的是,函数 RANK 对重复数的排位相同。但重复数的存在将影响后续数值的排位。嗯,这就好像并列第几的概念啊。例如,在一列整数里,如果整数 10 出现两次,其排位为 5,则 11 的排位为 7(没有排位为 6 的数值)。
2、求特定数值在一个数据集中的百分比排位的函数PERCENTRANK
此PERCENTRANK函数可用于查看特定数据在数据集中所处的位置。例如,可以使用函数 PERCENTRANK 计算某个特定的能力测试得分在所有的能力测试得分中的位置。
语法形式为PERCENTRANK(array,x,significance) 其中Array为彼此间相对位置确定的数字数组或数字区域。X为数组中需要得到其排位的值。Significance为可选项,表示返回的百分数值的有效位数。如果省略,函数 PERCENTRANK 保留 3 位小数。
3、与排名有关的示例
仍以某单位的年终奖金分配为例说明,这里以员工Annie的排名为例说明公式的写法。
奖金排名的公式写法为:
=RANK(C3,$C$3:$C$12)
百分比排名的公式写法为:
=PERCENTRANK($C$3:$C$12,C3)
图5
以上我们介绍了Excel统计函数中比较常用的几种函数,更多的涉及专业领域的统计函数可以参看附表以及各种相关的统计学书籍。
附表:
函数名称 | 函数说明 | 语法形式 |
---|---|---|
AVEDEV | 返回一组数据与其均值的绝对偏差的平均值,即离散度。 | AVEDEV(number1,number2, ...) |
AVERAGE | 返回参数算术平均值。 | AVERAGE(number1,number2, ...) |
AVERAGEA | 计算参数清单中数值的平均值(算数平均值)。不仅数字,而且文本和逻辑值(如TRUE 和 FALSE)也将计算在内。 | AVERAGEA(value1,value2,...) |
BETADIST | 返回 Beta 分布累积函数的函数值。Beta 分布累积函数通常用于研究样本集合中某些事物的发生和变化情况。 | BETADIST(x,alpha,beta,A,B) |
BETAINV | 返回 beta 分布累积函数的逆函数值。即,如果 probability = BETADIST(x,...),则 BETAINV(probability,...) = x。beta 分布累积函数可用于项目设计,在给定期望的完成时间和变化参数后,模拟可能的完成时间。 | BETAINV(probability,alpha,beta,A,B) |
BINOMDIST | 返回一元二项式分布的概率值。 | BINOMDIST(number_s,trials,probability_s,cumulative) |
CHIDIST | 返回 γ2 分布的单尾概率。γ2 分布与 γ2 检验相关。使用 γ2 检验可以比较观察值和期望值。 | CHIDIST(x,degrees_freedom) |
CHIINV | 返回 γ2 分布单尾概率的逆函数。 | CHIINV(probability,degrees_freedom) |
CHITEST | 返回独立性检验值。函数 CHITEST 返回 γ2 分布的统计值及相应的自由度。 | CHITEST(actual_range,expected_range) |
CONFIDENCE | 返回总体平均值的置信区间。置信区间是样本平均值任意一侧的区域。 | CONFIDENCE(alpha,standard_dev,size) |
CORREL | 返回单元格区域 array1 和 array2 之间的相关系数。使用相关系数可以确定两种属性之间的关系。 | CORREL(array1,array2) |
COUNT | 返回参数的个数。利用函数 COUNT 可以计算数组或单元格区域中数字项的个数。 | COUNT(value1,value2, ...) |
COUNTA | 返回参数组中非空值的数目。利用函数COUNTA 可以计算数组或单元格区域中数据项的个数。 | COUNTA(value1,value2, ...) |
COVAR | 返回协方差,即每对数据点的偏差乘积的平均数,利用协方差可以决定两个数据集之间的关系。 | COVAR(array1,array2) |
CRITBINOM | 返回使累积二项式分布大于等于临界值的最小值。此函数可以用于质量检验。 | CRITBINOM(trials,probability_s,alpha) |
DEVSQ | 返回数据点与各自样本均值偏差的平方和。 | DEVSQ(number1,number2,...) |
EXPONDIST | 返回指数分布。使用函数 EXPONDIST 可以建立事件之间的时间间隔模型。 | EXPONDIST(x,lambda,cumulative) |
FDIST | 返回 F 概率分布。使用此函数可以确定两个数据系列是否存在变化程度上的不同。 | FDIST(x,degrees_freedom1,degrees_freedom2) |
FINV | 返回 F 概率分布的逆函数值。 | FINV(probability,degrees_freedom1,degrees_freedom2) |
FISHER | 返回点 x 的 Fisher 变换。该变换生成一个近似正态分布而非偏斜的函数。 | FISHER(x) |
FISHERINV | 返回 Fisher 变换的逆函数值。使用此变换可以分析数据区域或数组之间的相关性。 | FISHERINV(y) |
FORECAST | 根据给定的数据计算或预测未来值。 | FORECAST(x,known_y's,known_x's) |
FREQUENCY | 以一列垂直数组返回某个区域中数据的频率分布。 | FREQUENCY(data_array,bins_array) |
FTEST | 返回 F 检验的结果。F 检验返回的是当数组 1 和数组 2 的方差无明显差异时的单尾概率。可以使用此函数来判断两个样本的方差是否不同。 | FTEST(array1,array2) |
GAMMADIST | 返回伽玛分布。可以使用此函数来研究具有偏态分布的变量。伽玛分布通常用于排队分析。 | GAMMADIST(x,alpha,beta,cumulative) |
GAMMAINV | 返回伽玛分布的累积函数的逆函数。 | GAMMAINV(probability,alpha,beta) |
GAMMALN | 返回伽玛函数的自然对数,Γ(x)。 | GAMMALN(x) |
GEOMEAN | 返回正数数组或数据区域的几何平均值。 | GEOMEAN(number1,number2, ...) |
GROWTH | 根据给定的数据预测指数增长值。 | GROWTH(known_y's,known_x's,new_x's,const) |
HARMEAN | 返回数据集合的调和平均值。调和平均值与倒数的算术平均值互为倒数。 | HARMEAN(number1,number2, ...) |
HYPGEOMDIST | 返回超几何分布。 | HYPGEOMDIST(sample_s,number_sample, population_s,number_population) |
INTERCEPT | 利用已知的 x 值与 y 值计算直线与 y 轴的截距。 | INTERCEPT(known_y's,known_x's) |
KURT | 返回数据集的峰值。 | KURT(number1,number2, ...) |
LARGE | 返回数据集里第 k 个最大值。使用此函数可以根据相对标准来选择数值。 | LARGE(array,k) |
LINEST | 使用最小二乘法计算对已知数据进行最佳直线拟合,并返回描述此直线的数组。 | LINEST(known_y's,known_x's,const,stats) |
LOGEST | 在回归分析中,计算最符合观测数据组的指数回归拟合曲线,并返回描述该曲线的数组。 | LOGEST(known_y's,known_x's,const,stats) |
LOGINV | 返回 x 的对数正态分布累积函数的逆函数。 | LOGINV(probability,mean,standard_dev) |
LOGNORMDIST | 返回 x 的对数正态分布的累积函数。 | LOGNORMDIST(x,mean,standard_dev) |
MAX | 返回数据集中的最大数值。 | MAX(number1,number2,...) |
MAXA | 返回参数清单中的最大数值。 | MAXA(value1,value2,...) |
MEDIAN | 返回给定数值集合的中位数。中位数是在一组数据中居于中间的数。 | MEDIAN(number1,number2, ...) |
MIN | 返回给定参数表中的最小值。 | MIN(number1,number2, ...) |
MINA | 返回参数清单中的最小数值。 | MINA(value1,value2,...) |
MODE | 返回在某一数组或数据区域中出现频率最多的数值。 | MODE(number1,number2, ...) |
NEGBINOMDIST | 返回负二项式分布。 | NEGBINOMDIST(number_f,number_s,probability_s) |
NORMDIST | 返回给定平均值和标准偏差的正态分布的累积函数。 | NORMDIST(x,mean,standard_dev,cumulative) |
NORMINV | 返回给定平均值和标准偏差的正态分布的累积函数的逆函数。 | NORMINV(probability,mean,standard_dev) |
NORMSDIST | 返回标准正态分布的累积函数,该分布的平均值为 0,标准偏差为 1。 | NORMSDIST(z) |
NORMSINV | 返回标准正态分布累积函数的逆函数。该分布的平均值为 0,标准偏差为 1。 | NORMSINV(probability) |
PEARSON | 返回 Pearson(皮尔生)乘积矩相关系数,r,这是一个范围在 -1.0 到 1.0 之间(包括 -1.0 和 1.0 在内)的无量纲指数,反映了两个数据集合之间的线性相关程度。 | PEARSON(array1,array2) |
PERCENTILE | 返回数值区域的 K 百分比数值点。可以使用此函数来建立接受阀值。例如,可以确定得分排名在 90 个百分点以上的检测侯选人。 | PERCENTILE(array,k) |
PERCENTRANK | 返回特定数值在一个数据集中的百分比排位。此函数可用于查看特定数据在数据集中所处的位置。例如,可以使用函数 PERCENTRANK 计算某个特定的能力测试得分在所有的能力测试得分中的位置。 | PERCENTRANK(array,x,significance) |
PERMUT | 返回从给定数目的对象集合中选取的若干对象的排列数。排列可以为有内部顺序的对象或为事件的任意集合或子集。排列与组合不同,组合的内部顺序无意义。此函数可用于彩票计算中的概率。 | PERMUT(number,number_chosen) |
POISSON | 返回泊松分布。泊松分布通常用于预测一段时间内事件发生的次数,比如一分钟内通过收费站的轿车的数量。 | POISSON(x,mean,cumulative) |
PROB | 返回一概率事件组中落在指定区域内的事件所对应的概率之和。如果没有给出 upper_limit,则返回 x _range 内值等于 lower_limit 的概率。 | PROB(x_range,prob_range,lower_limit,upper_limit) |
QUARTILE | 返回数据集的四分位数。四分位数通常用于在销售额和测量值数据集中对总体进行分组。例如,可以使用函数 QUARTILE 求得总体中前 25% 的收入值。 | QUARTILE(array,quart) |
RANK | 返回一个数值在一组数值中的排位。数值的排位是与数据清单中其他数值的相对大小(如果数据清单已经排过序了,则数值的排位就是它当前的位置)。 | RANK(number,ref,order) |
RSQ | 返回根据 known_y's 和 known_x's 中数据点计算得出的 Pearson 乘积矩相关系数的平方。有关详细信息,请参阅函数 REARSON。R 平方值可以解释为 y 方差与 x 方差的比例。 | RSQ(known_y's,known_x's) |
SKEW | 返回分布的偏斜度。偏斜度反映以平均值为中心的分布的不对称程度。正偏斜度表示不对称边的分布更趋向正值。负偏斜度表示不对称边的分布更趋向负值。 | SKEW(number1,number2,...) |
SLOPE | 返回根据 known_y's 和 known_x's 中的数据点拟合的线性回归直线的斜率。斜率为直线上任意两点的重直距离与水平距离的比值,也就是回归直线的变化率。 | SLOPE(known_y's,known_x's) |
SMALL | 返回数据集中第 k 个最小值。使用此函数可以返回数据集中特定位置上的数值。 | SMALL(array,k) |
STANDARDIZE | 返回以 mean 为平均值,以 standard-dev 为标准偏差的分布的正态化数值。 | STANDARDIZE(x,mean,standard_dev) |
STDEV | 估算样本的标准偏差。标准偏差反映相对于平均值(mean)的离散程度。 | STDEV(number1,number2,...) |
STDEVA | 估算基于给定样本的标准偏差。标准偏差反映数值相对于平均值(mean)的离散程度。文本值和逻辑值(如 TRUE 或 FALSE)也将计算在内。 | STDEVA(value1,value2,...) |
STDEVP | 返回以参数形式给出的整个样本总体的标准偏差。标准偏差反映相对于平均值(mean)的离散程度。 | STDEVP(number1,number2,...) |
STDEVPA | 计算样本总体的标准偏差。标准偏差反映数值相对于平均值(mean)的离散程度。 | STDEVPA(value1,value2,...) |
STEYX | 返回通过线性回归法计算 y 预测值时所产生的标准误差。标准误差用来度量根据单个 x 变量计算出的 y 预测值的误差量。 | STEYX(known_y's,known_x's) |
TDIST | 返回学生 t- 分布的百分点(概率),t 分布中数值 (x) 是 t 的计算值(将计算其百分点)。t 分布用于小样本数据集合的假设检验。使用此函数可以代替 t 分布的临界值表。 | TDIST(x,degrees_freedom,tails) |
TINV | 返回作为概率和自由度函数的学生 t 分布的 t 值。 | TINV(probability,degrees_freedom) |
TREND | 返回一条线性回归拟合线的一组纵坐标值(y 值)。即找到适合给定的数组 known_y's 和 known_x's 的直线(用最小二乘法),并返回指定数组 new_x's 值在直线上对应的 y 值。 | TREND(known_y's,known_x's,new_x's,const) |
TRIMMEAN | 返回数据集的内部平均值。函数 TRIMMEAN 先从数据集的头部和尾部除去一定百分比的数据点,然后再求平均值。当希望在分析中剔除一部分数据的计算时,可以使用此函数。 | TRIMMEAN(array,percent) |
TTEST | 返回与学生氏- t 检验相关的概率。可以使用函数 TTEST 判断两个样本是否可能来自两个具有相同均值的总体。 | TTEST(array1,array2,tails,type) |
VAR | 估算样本方差。 | VAR(number1,number2,...) |
VARA | 估算基于给定样本的方差。不仅数字,文本值和逻辑值(如 TRUE 和 FALSE)也将计算在内。 | VARA(value1,value2,...) |
VARP | 计算样本总体的方差。 | VARP(number1,number2,...) |
VARPA | 计算样本总体的方差。不仅数字,文本值和逻辑值(如 TRUE 和 FALSE)也将计算在内。 | VARPA(value1,value2,...) |
WEIBULL | 返回韦伯分布。使用此函数可以进行可靠性分析,比如计算设备的平均故障时间。 | WEIBULL(x,alpha,beta,cumulative) |
ZTEST | 返回 z 检验的双尾 P 值。Z 检验根据数据集或数组生成 x 的标准得分,并返回正态分布的双尾概率。可以使用此函数返回从某总体中抽取特定观测值的似然估计。 | ZTEST(array,x,sigma) |