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的参赛分数。在这里,我们先假定已经将该选手的分数进行了从高到底的排序,在后面的介绍中我们将详细了解排序的方法。

二、用于求单元格个数的统计函数count
语法形式为count(value1,value2, ...)
其中value1, value2, ...为包含或引用各种类型数据的参数(1~30个),但只有数字类型的数据才被计数。函数 count 在计数时,将把数字、空值、逻辑值、日期或以文字代表的数计算进去;但是错误值或其他无法转化成数字的文字则被忽略。 如果参数是一个数组或引用,那么只统计数组或引用中的数字;数组中或引用的空单元格、逻辑值、文字或错误值都将忽略。如果要统计逻辑值、文字或错误值,应当使用函数 counta。 举例说明count函数的用途,示例中也列举了带a的函数counta的用途。仍以上例为例,要计算一共有多少评委参与评分(用函数counta),以及有几个评委给出了有效分数(用函数count)。

三、求区域中数据的频率分布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}

四、一组用于求数据集的满足不同要求的数值的函数
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、 以上函数的示例
以某单位年终奖金分配表为例说明。在示例中,我们将利用这些函数求解该单位年终奖金分配中的最高金额、最低金额、平均金额、中间金额、众数金额以及第二高金额等。 详细的公式写法可从图中清楚的看出,在此不再赘述。

五、用来排位的函数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:$c)
百分比排名的公式写法为:
=percentrank($c:$c,c3)

日期时间函数

date

返回代表特定日期的序列号。如果在输入函数前,单元格格式为“常规”,则结果将设为日期格式。
语法
date(year,month,day)
year    参数 year 可以为一到四位数字。microsoft excel 将根据所使用的日期系统来解释 year 参数。默认情况下,microsoft excel for windows 将使用 1900 日期系统,而 microsoft excel for macintosh 将使用 1904 日期系统。
对于 1900 年日期系统
如果 year 位于 0(零)到 1899(包含)之间,则 excel 会将该值加上 1900,再计算年份。例如:date(108,1,2) 将返回 2008 年 1 月 2 日 (1900+108)。
如果 year 位于 1900 到 9999(包含)之间,则 excel 将使用该数值作为年份。例如:date(2008,1,2) 将返回 2008 年 1 月 2 日。
如果 year 小于 0 或大于等于 10000,则 excel 将返回错误值 #num!。

对于 1904 年日期系统
如果 year 位于 4 到 1899(含)之间,则 excel 会将该值加上 1900,再计算年份。例如:date(108,1,2) 将返回 2008 年 1 月 2 日 (1900+108)。
如果 year 位于 1904 到 9999(含)之间,则 excel 将使用该数值作为年份。例如:date(2008,1,2) 将返回 2008 年 1 月 2 日。
如果 year 小于 4 或大于等于 10000,或者位于 1900 到 1903(含)之间,则 excel 将返回错误值 #num!。
month  代表每年中月份的数字。如果所输入的月份大于 12,将从指定年份的一月份开始往上加算。例如:date(2008,14,2) 返回代表 2009 年 2 月 2 日的序列号。
day    代表在该月份中第几天的数字。如果 day 大于该月份的最大天数,则将从指定月份的第一天开始往上累加。例如,date(2008,1,35) 返回代表 2008 年 2 月 4 日的序列号。
说明
microsoft excel 可将日期存储为可用于计算的序列号。默认情况下,1900 年 1 月 1 日的序列号是 1 而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。microsoft excel for the macintosh 使用另外一个默认日期系统。
函数 date 在年、月、日为变量的公式中非常有用。

datevalue

返回 date_text 所表示的日期的序列号。函数 datevalue 的主要功能是将以文本表示的日期转换成一个序列号。
语法
datevalue(date_text)
date_text    代表以 microsoft excel 日期格式表示的日期的文本。例如,"2008-1-30" 或 "30-jan-08" 就是带引号的文本,它用于代表日期。在使用 excel for windows 中的默认日期系统时,date_text 必须表示 1900 年 1 月 1 日到 9999 年 12 月 31 日之间的一个日期;而在使用 excel for macintosh 中的默认日期系统时,date_text 必须表示 1904 年 1 月 1 日到 9999 年 12 月 31 日之间的一个日期。如果 date_text 超出上述范围,则函数 datevalue 返回错误值 #value!。
如果省略 date_text 中的年份部分,则函数 datevalue 使用计算机系统内部时钟的当前年份。date_text 中的时间信息将被忽略。
说明
microsoft excel 可将日期存储为可用于计算的序列号。默认情况下,1900 年 1 月 1 日的序列号是 1 而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。microsoft excel for the macintosh 使用另外一个默认日期系统。
大部分函数都会自动将日期值转换成序列号

day

返回以序列号表示的某日期的天数,用整数 1 到 31 表示。
语法
day(serial_number)
serial_number    为要查找的那一天的日期。应使用 date 函数来输入日期,或者将日期作为其他公式或函数的结果输入。例如,可使用函数 date(2008,5,23) 输入日期 2008 年 5 月 23 日。如果日期以文本的形式输入,则会出现问题。
说明
microsoft excel 可将日期存储为可用于计算的序列号。默认情况下,1900 年 1 月 1 日的序列号是 1 而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。microsoft excel for the macintosh 使用另外一个默认日期系统。
不论日期值以何种格式显示,year,month 和 day 函数返回的值都是 gregorian 值。例如,如果日期的显示格式是回历,则 year、month 和 day 函数返回的值将是与相同的 gregorian 日期相关联的值。
 
days360

按照一年 360 天的算法(每个月以 30 天计,一年共计 12 个月),返回两日期间相差的天数,这在一些会计计算中将会用到。如果财务系统是基于一年 12 个月,每月 30 天,可用此函数帮助计算支付款项。
语法
days360(start_date,end_date,method)
start_date    和 end_date 是用于计算期间天数的起止日期。 如果 start_date 在 end_date 之后,则 days360 将返回一个负数。应使用 date 函数来输入日期,或者将日期作为其他公式或函数的结果输入。例如,使用函数 date(2008,5,23) 输入日期 2008 年 5 月 23 日。如果日期以文本的形式输入,则会出现问题。
method    为一个逻辑值,它指定了在计算中是采用欧洲方法还是美国方法。
method
 定义
false 或省略
 美国方法 (nasd)。如果起始日期是一个月的 31 号,则等于同月的 30 号。如果终止日期是一个月的 31 号,并且起始日期早于 30 号,则终止日期等于下一个月的 1 号,否则,终止日期等于本月的 30 号。
true
 欧洲方法。起始日期和终止日期为一个月的 31 号,都将等于本月的 30 号。

说明
microsoft excel 可将日期存储为可用于计算的序列号。默认情况下,1900 年 1 月 1 日的序列号是 1,而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。microsoft excel for the macintosh 使用另外一个默认日期系统。

hour

返回时间值的小时数。即一个介于 0 (12:00 a.m.) 到 23 (11:00 p.m.) 之间的整数。
语法
hour(serial_number)
serial_number    表示一个时间值,其中包含要查找的小时。时间有多种输入方式:带引号的文本字符串(例如:"6:45 pm")、十进制数(例如 0.78125 表示 6:45 pm)或其他公式或函数的结果(例如:timevalue("6:45 pm"))。
说明
microsoft excel for windows 和 excel for macintosh 使用不同的默认日期系统。时间值为日期值的一部分,并用十进制数来表示(例如 12:00 pm 可表示为 0.5,因为此时是一天的一半)。

minute

返回时间值中的分钟,为一个介于 0 到 59 之间的整数。
语法
minute(serial_number)
serial_number    表示一个时间值,其中包含要查找的分钟。时间有多种输入方式:带引号的文本字符串(例如 "6:45 pm")、十进制数(例如 0.78125 表示 6:45 pm)或其他公式或函数的结果(例如 timevalue("6:45 pm"))。
说明
microsoft excel for windows 和 microsoft excel for the macintosh 使用不同的默认日期系统。时间值为日期值的一部分,并用十进制数表示(例如 12:00 pm 可表示为 0.5,因为此时是一天的一半)。

month

返回以序列号表示的日期中的月份。月份是介于 1(一月)到 12(十二月)之间的整数。
语法
month(serial_number)
serial_number    表示一个日期值,其中包含要查找的月份。应使用 date 函数来输入日期,或者将日期作为其他公式或函数的结果输入。例如,使用 date(2008,5,23) 输入 2008 年 5 月 23 日。如果日期以文本的形式输入,则会出现问题。
说明
microsoft excel 可将日期存储为可用于计算的序列号。默认情况下,1900 年 1 月 1 日的序列号是 1 而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。microsoft excel for the macintosh 使用另外一个默认日期系统。
由 year、month 和 day 函数返回的值为公历值,而不用考虑所给日期值的显示格式。例如,如果所给日期值的显示格式为 hijri,则 year、month 和 day 函数的返回值将是与等价的公历日期相关的值。

now

返回当前日期和时间所对应的序列号。如果在输入函数前,单元格的格式为“常规”,则结果将设为日期格式。
语法
now( )
说明
microsoft excel 可将日期存储为可用于计算的序列号。默认情况下,1900 年 1 月 1 日的序列号是 1 而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。microsoft excel for the macintosh 使用另外一个默认日期系统。
序列号中小数点右边的数字表示时间,左边的数字表示日期。例如,序列号 .5 表示时间为中午 12:00。
函数 now 只有在重新计算工作表,或执行含有此函数的宏时改变。它并不会随时更新。

second

返回时间值的秒数。返回的秒数为 0 到 59 之间的整数。
语法
second(serial_number)
serial_number    表示一个时间值,其中包含要查找的秒数。时间有多种输入方式:带引号的文本字符串(例如 "6:45 pm")、十进制数(例如,0.78125 表示 6:45 pm)或其他公式或函数的结果(例如 timevalue("6:45 pm"))。
说明
microsoft excel for windows 和 microsoft excel for macintosh 使用不同的默认日期系统。时间值为日期值的一部分,并用十进制数来表示(例如 12:00 pm 可表示为 0.5,因为此时是一天的一半)。

today

返回当前日期的序列号。序列号是 microsoft excel 日期和时间计算使用的日期-时间代码。如果在输入函数前,单元格的格式为“常规”,则结果将设为日期格式。
语法
today( )
说明
microsoft excel 可将日期存储为可用于计算的序列号。默认情况下,1900 年 1 月 1 日的序列号是 1 而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。microsoft excel for the macintosh 使用另外一个默认日期系统。

weekday

返回某日期为星期几。默认情况下,其值为 1(星期天)到 7(星期六)之间的整数。
语法:
weekday(serial_number,return_type)
serial_number    表示一个顺序的序列号,代表要查找的那一天的日期。应使用 date 函数输入日期,或者将函数作为其他公式或函数的结果输入。例如,使用 date(2008,5,23) 输入 2008 年 5 月 23 日。如果日期以文本的形式输入,则会出现问题。
return_type    为确定返回值类型的数字。
return_type
 返回的数字
1 或省略
 数字 1(星期日)到数字 7(星期六),同 microsoft excel 早期版本。
2
 数字 1(星期一)到数字 7(星期日)。
3
 数字 0(星期一)到数字 6(星期日)。

说明
microsoft excel 可将日期存储为可用于计算的序列号。默认情况下,1900 年 1 月 1 日的序列号是 1,而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。microsoft excel for the macintosh 使用另外一个默认日期系统。

year
返回某日期对应的年份。返回值为 1900 到 9999 之间的整数。
语法
year(serial_number)
serial_number    为一个日期值,其中包含要查找年份的日期。应使用 date 函数来输入日期,或者将日期作为其他公式或函数的结果输入。例如,使用 date(2008,5,23) 输入 2008 年 5 月 23 日。如果日期以文本的形式输入,则会出现问题。
说明
microsoft excel 可将日期存储为可用于计算的序列号。默认情况下,1900 年 1 月 1 日的序列号是 1 而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。microsoft excel for the macintosh 使用另外一个默认日期系统。
由 year、month 和 day 函数返回的值是 gregorian 值,不管所提供的日期值是怎样的显示格式。例如,如果所提供的日期值显示格式是 hijri,year、month 和 day 函数返回的值将是对应 gregorian 日期的值。