Excel常用函数讲解.docx
《Excel常用函数讲解.docx》由会员分享,可在线阅读,更多相关《Excel常用函数讲解.docx(11页珍藏版)》请在冰豆网上搜索。
![Excel常用函数讲解.docx](https://file1.bdocx.com/fileroot1/2023-1/24/86bcb70e-b608-434c-8a99-4771a0392944/86bcb70e-b608-434c-8a99-4771a03929441.gif)
Excel常用函数讲解
Excel函数应用
1、vlookup
2、midleftrightfindlenconcatenateindex
3、absrank
4、roundrounddownroundup
5、ifsumcount
6、monthtodayyear
7、datenowweekday
一、统计函数
有些函数在名称中多了一个字母A?
比如,AVERAGE与AVERAGEA;COUNT与COUNTA。
基本上,名称中带A的函数在统计时不仅统计数字,而且文本和逻辑值(如TRUE和FALSE)也将计算在内。
(一)用于求平均值的统计函数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个数据点(20x0.2),头部除去2个,尾部除去2个。
函数TRIMMEAN将除去的数据点数目向下舍为最接近的2的倍数。
●举例说明:
示例中也列举了带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个参数,也可以使用单一数组(即对数组区域的引用)来代替由逗号分隔的参数。
●以上函数的示例
以某单位年终奖金分配表为例说明。
在示例中,我们将利用这些函数求解该单位年终奖金分配中的最高金额、最低金额、平均金额、中间金额、众数金额以及第二高金额等。
详细的公式写法可从图中清楚的看出,在此不再赘述。
图4
(五)用来排位的函数RANK、PERCENTRANK
1、一个数值在一组数值中的排位的函数RANK
数值的排位是与数据清单中其他数值的相对大小,当然如果数据清单已经排过序了,则数值的排位就是它当前的位置。
数据清单的排序可以使用Excel提供的排序功能完成。
语法形式为RANK(number,ref,order)其中Number为需要找到排位的数字;Ref为包含一组数字的数组或引用。
Order为一数字用来指明排位的方式。
⏹如果order为0或省略,则Excel将ref当作按降序排列的数据清单进行排位。
⏹如果order不为零,MicrosoftExcel将ref当作按升序排列的数据清单进行排位。
需要说明的是,函数RANK对重复数的排位相同。
但重复数的存在将影响后续数值的排位。
嗯,这就好像并列第几的概念啊。
例如,在一列整数里,如果整数10出现两次,其排位为5,则11的排位为7(没有排位为6的数值)。
2、求特定数值在一个数据集中的百分比排位的函数PERCENTRANK
此PERCENTRANK函数可用于查看特定数据在数据集中所处的位置。
例如,可以使用函数PERCENTRANK计算某个特定的能力测试得分在所有的能力测试得分中的位置。
语法形式为PERCENTRANK(array,x,significance)其中Array为彼此间相对位置确定的数字数组或数字区域。
X为数组中需要得到其排位的值。
Significance为可选项,表示返回的百分数值的有效位数。
如果省略,函数PERCENTRANK保留3位小数。
●与排名有关的示例
仍以某单位的年终奖金分配为例说明,这里以员工Annie的排名为例说明公式的写法。
奖金排名的公式写法为:
=RANK(C3,$C$3:
$C$12)
百分比排名的公式写法为:
=PERCENTRANK($C$3:
$C$12,C3)
图5
二、IF函数以及COUNTIF、SUMIF函数
(一)IF函数
IF函数用于执行真假值判断后,根据逻辑测试的真假值返回不同的结果,因此If函数也称之为条件函数。
它的应用很广泛,可以使用函数IF对数值和公式进行条件检测。
语法为IF(logical_test,value_if_true,value_if_false)。
其中Logical_test表示计算结果为TRUE或FALSE的任意值或表达式。
本参数可使用任何比较运算符。
如果第一个参数logical_test返回的结果为真的话,则执行第二个参数Value_if_true的结果,否则执行第三个参数Value_if_false的结果。
IF函数可以嵌套七层,用value_if_false及value_if_true参数可以构造复杂的检测条件。
Excel还提供了可根据某一条件来分析数据的其他函数。
例如,如果要计算单元格区域中某个文本串或数字出现的次数,则可使用COUNTIF工作表函数。
如果要根据单元格区域中的某一文本串或数字求和,则可使用SUMIF工作表函数。
(二)COUNTIF和SUMIF函数
在了解了IF函数的使用方法后,我们再来看看与之类似的Excel提供的可根据某一条件来分析数据的其他函数。
例如,如果要计算单元格区域中某个文本串或数字出现的次数,则可使用COUNTIF工作表函数。
如果要根据单元格区域中的某一文本串或数字求和,则可使用SUMIF工作表函数。
关于SUMIF函数在数学与三角函数中以做了较为详细的介绍。
●COUNTIF
COUNTIF可以用来计算给定区域内满足特定条件的单元格的数目。
比如在成绩表中计算每位学生取得优秀成绩的课程数。
在工资表中求出所有基本工资在2000元以上的员工数。
语法形式为COUNTIF(range,criteria)。
其中Range为需要计算其中满足条件的单元格数目的单元格区域。
Criteria确定哪些单元格将被计算在内的条件,其形式可以为数字、表达式或文本。
例如,条件可以表示为32、"32"、">32"、"apples"。
1、成绩表
这里仍以上述成绩表的例子说明一些应用方法。
我们需要计算的是:
每位学生取得优秀成绩的课程数。
规则为成绩大于90分记做优秀。
如图8所示
图8
根据这一规则,我们在优秀门数中写公式(以单元格B13为例):
=COUNTIF(B4:
B10,">90")
语法解释为,计算B4到B10这个范围,即jarry的各科成绩中有多少个数值大于90的单元格。
在优秀门数栏中可以看到jarry的优秀门数为两门。
其他人也可以依次看到。
●SUMIF
SUMIF函数可对满足某一条件的单元格区域求和,该条件可以是数值、文本或表达式,可以应用在人事、工资和成绩统计中。
三、文本函数
(一)大小写转换
LOWER--将一个文字串中的所有大写字母转换为小写字母。
UPPER--将文本转换成大写形式。
PROPER--将文字串的首字母及任何非字母字符之后的首字母转换成大写。
将其余的字母转换成小写。
这三种函数的基本语法形式均为函数名(text)。
示例说明:
已有字符串为:
pLeaseComEHere!
可以看到由于输入的不规范,这句话大小写乱用了。
通过以上三个函数可以将文本转换显示样式,使得文本变得规范。
参见图1
Lower(pLeaseComEHere!
)=pleasecomehere!
upper(pLeaseComEHere!
)=PLEASECOMEHERE!
proper(pLeaseComEHere!
)=PleaseComeHere!
图1
(二)取出字符串中的部分字符
您可以使用Mid、Left、Right等函数从长字符串内获取一部分字符。
具体语法格式为
●LEFT函数:
LEFT(text,num_chars)其中Text是包含要提取字符的文本串。
Num_chars指定要由LEFT所提取的字符数。
●MID函数:
MID(text,start_num,num_chars)其中Text是包含要提取字符的文本串。
Start_num是文本中要提取的第一个字符的位置。
●RIGHT函数:
RIGHT(text,num_chars)其中Text是包含要提取字符的文本串。
Num_chars指定希望RIGHT提取的字符数。
四、日期与时间函数
(一)取出当前系统时间/日期信息
用于取出当前系统时间/日期信息的函数主要有NOW、TODAY。
语法形式均为函数名()。
(二)取得日期/时间的部分字段值
如果需要单独的年份、月份、日数或小时的数据时,可以使用HOUR、DAY、MONTH、YEAR函数直接从日期/时间中取出需要的数据。
●上机练习:
做一个美观简洁的人事资料分析表
1、示例说明
在如图6所示的某公司人事资料表中,除了编号、员工姓名、身份证号码以及参加工作时间为手工添入外,其余各项均为用函数计算所得。
图6
在此例中我们将详细说明如何通过函数求出:
(1)自动从身份证号码中提取出生年月、性别信息。
(2)自动从参加工作时间中提取工龄信息。
2、身份证号码相关知识
在了解如何实现自动从身份证号码中提取出生年月、性别信息之前,首先需要了解身份证号码所代表的含义。
我们知道,当今的身份证号码有15/18位之分。
早期签发的身份证号码是15位的,现在签发的身份证由于年份的扩展(由两位变为四位)和末尾加了效验码,就成了18位。
这两种身份证号码将在相当长的一段时期内共存。
两种身份证号码的含义如下:
(1)15位的身份证号码:
1~6位为地区代码,7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期,第13~15位为顺序号,并能够判断性别,奇数为男,偶数为女。
(2)18位的身份证号码:
1~6位为地区代码,7~10位为出生年份(4位),11~12位为出生月份,13~14位为出生日期,第15~17位为顺序号,并能够判断性别,奇数为男,偶数为女。
18位为效验位。
3、应用函数
在此例中为了实现数据的自动提取,应用了如下几个Excel函数。
(1)IF函数:
根据逻辑表达式测试的结果,返回相应的值。
IF函数允许嵌套。
语法形式为:
IF(logical_test,value_if_true,value_if_false)
(2)CONCATENATE:
将若干个文字项合并至一个文字项中。
语法形式为:
CONCATENATE(text1,text2……)
(3)MID:
从文本字符串中指定的起始位置起,返回指定长度的字符。
语法形式为:
MID(text,start_num,num_chars)
(4)TODAY:
返回计算机系统内部的当前日期。
语法形式为:
TODAY()
(5)DATEDIF:
计算两个日期之间的天数、月数或年数。
语法形式为:
DATEDIF(start_date,end_date,unit)
(6)VALUE:
将代表数字的文字串转换成数字。
语法形式为:
VALUE(text)
(7)RIGHT:
根据所指定的字符数返回文本串中最后一个或多个字符。
语法形式为:
RIGHT(text,num_chars)
(8)INT:
返回实数舍入后的整数值。
语法形式为:
INT(number)
4、公式写法及解释(以员工Andy为例说明)
说明:
为避免公式中过多的嵌套,这里的身份证号码限定为15位的。
如果您看懂了公式的话,可以进行简单的修改即可适用于18位的身份证号码,甚至可适用于15、18两者并存的情况。
(1)根据身份证号码求性别
=IF(VALUE(RIGHT(E4,3))/2=INT(VALUE(RIGHT(E4,3))/2),"女","男")
公式解释:
a.RIGHT(E4,3)用于求出身份证号码中代表性别的数字,实际求得的为代表数字的字符串
b.VALUE(RIGHT(E4,3)用于将上一步所得的代表数字的字符串转换为数字
c.VALUE(RIGHT(E4,3))/2=INT(VALUE(RIGHT(E4,3))/2用于判断这个身份证号码是奇数还是偶数,当然你也可以用Mod函数来做出判断。
d.=IF(VALUE(RIGHT(E4,3))/2=INT(VALUE(RIGHT(E4,3))/2),"女","男")及如果上述公式判断出这个号码是偶数时,显示"女",否则,这个号码是奇数的话,则返回"男"。
(2)根据身份证号码求出生日期
=CONCATENATE("19",MID(E4,7,2),"/",MID(E4,9,2),"/",MID(E4,11,2))
公式解释:
a.MID(E4,7,2)为在身份证号码中获取表示年份的数字的字符串
b.MID(E4,9,2)为在身份证号码中获取表示月份的数字的字符串
c.MID(E4,11,2)为在身份证号码中获取表示日期的数字的字符串
d.CONCATENATE("19",MID(E4,7,2),"/",MID(E4,9,2),"/",MID(E4,11,2))目的就是将多个字符串合并在一起显示。
(3)根据参加工作时间求年资(即工龄)
=CONCATENATE(DATEDIF(F4,TODAY(),"y"),"年",DATEDIF(F4,TODAY(),"ym"),"个月")
公式解释:
a.TODAY()用于求出系统当前的时间
b.DATEDIF(F4,TODAY(),"y")用于计算当前系统时间与参加工作时间相差的年份
c.DATEDIF(F4,TODAY(),"ym")用于计算当前系统时间与参加工作时间相差的月份,忽略日期中的日和年。
d.=CONCATENATE(DATEDIF(F4,TODAY(),"y"),"年",DATEDIF(F4,TODAY(),"ym"),"个月")目的就是将多个字符串合并在一起显示。
5.其他说明
在这张人事资料表中我们还发现,创建日期:
31-05-2001时显示在同一个单元格中的。
这是如何实现的呢?
难道是手工添加的吗?
不是,实际上这个日期还是变化的,它显示的是系统当前时间。
这里是利用函数TODAY和函数TEXT一起来创建一条信息,该信息包含着当前日期并将日期以"dd-mm-yyyy"的格式表示。
具体公式写法为:
="创建日期:
"&TEXT(TODAY(),"dd-mm-yyyy")
五、INDEX函数
INDEX用于返回表格或区域中的数值或对数值的引用。
函数INDEX()有两种形式:
数组和引用。
数组形式通常返回数值或数值数组;引用形式通常返回引用。
(1)INDEX(array,row_num,column_num)返回数组中指定单元格或单元格数组的数值。
Array为单元格区域或数组常数。
Row_num为数组中某行的行序号,函数从该行返回数值。
Column_num为数组中某列的列序号,函数从该列返回数值。
需注意的是Row_num和column_num必须指向array中的某一单元格,否则,函数INDEX返回错误值#REF!
。
(2)INDEX(reference,row_num,column_num,area_num)返回引用中指定单元格或单元格区域的引用。
Reference为对一个或多个单元格区域的引用。
Row_num为引用中某行的行序号,函数从该行返回一个引用。
Column_num为引用中某列的列序号,函数从该列返回一个引用。
需注意的是Row_num、column_num和area_num必须指向reference中的单元格;否则,函数INDEX返回错误值#REF!
。
如果省略row_num和column_num,函数INDEX返回由area_num所指定的区域。
六、CONCATENATE
将几个文本字符串合并为一个文本字符串。
语法:
CONCATENATE(text1,text2,...)
Text1,text2,... 为1到30个将要合并成单个文本项的文本项。
这些文本项可以为文本字符串、数字或对单个单元格的引用。
说明:
也可以用&(和号)运算符代替函数CONCATENATE实现文本项的合并。
七、ROUND、ROUNDUP、ROUNDDOWN
●ROUND
返回某个数字按指定位数取整后的数字。
语法:
ROUND(number,num_digits)
Number 需要进行四舍五入的数字。
Num_digits 指定的位数,按此位数进行四舍五入。
说明
如果num_digits大于0,则四舍五入到指定的小数位。
如果num_digits等于0,则四舍五入到最接近的整数。
如果num_digits小于0,则在小数点左侧进行四舍五入
●ROUNDDOWN
靠近零值,向下(绝对值减小的方向)舍入数字。
语法:
ROUNDDOWN(number,num_digits)
Number 为需要向下舍入的任意实数。
Num_digits 四舍五入后的数字的位数。
说明
函数ROUNDDOWN和函数ROUND功能相似,不同之处在于函数ROUNDDOWN总是向下舍入数字。
如果num_digits大于0,则向下舍入到指定的小数位。
如果num_digits等于0,则向下舍入到最接近的整数。
如果num_digits小于0,则在小数点左侧向下进行舍入。
●ROUNDUP
远离零值,向上舍入数字。
语法:
ROUNDUP(number,num_digits)
Number 为需要向上舍入的任意实数。
Num_digits 四舍五入后的数字的位数。
说明
函数ROUNDUP和函数ROUND功能相似,不同之处在于函数ROUNDUP总是向上舍入数字。
如果num_digits大于0,则向上舍入