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的优秀门数为两门。其他人也可以依次看到。
2、 销售业绩表。
销售业绩表可能是综合运用if、sumif、countif非常典型的示例。比如,可能希望计算销售人员的订单数,然后汇总每个销售人员的销售额,并且根据总发货量决定每次销售应获得的奖金。
原始数据表如图9所示(原始数据是以流水单形式列出的,即按订单号排列)
图9 原始数据表。
按销售人员汇总表如图10所示
图10 销售人员汇总表。
如图10所示的表完全是利用函数计算的方法自动汇总的数据。首先建立一个按照销售人员汇总的表单样式,如图所示。然后分别计算订单数、订单总额、销售奖金。
1) 订单数 --用countif计算销售人员的订单数。
以销售人员annie的订单数公式为例。公式:
countif($c$2:$c$13,a17)
语法解释为计算单元格a17(即销售人员annie)在"销售人员"清单$c$2:$c$13的范围内(即图9所示的原始数据表)出现的次数。
这个出现的次数即可认为是该销售人员annie的订单数。
2) 订单总额--用sumif汇总每个销售人员的销售额。
以销售人员annie的订单总额公式为例。公式:
sumif($c$2:$c$13,a17,$b$2:$b$13)
此公式在"销售人员"清单$c$2:$c$13中检查单元格a17 中的文本(即销售人员annie),然后计算"订单金额"列($b$2:$b$13)中相应量的和。
这个相应量的和就是销售人员annie的订单总额。
3) 销售奖金--用if根据订单总额决定每次销售应获得的奖金。
假定公司的销售奖金规则为当订单总额超过5万元时,奖励幅度为百分之十五,否则为百分之十。根据这一规则仍以销售人员annie为例说明。公式为:
if(c17<50000,10%,15%)*c17
如果订单总额小于 50000则奖金为 10%;如果订单总额大于等于 50000,则奖金为 15%。
至此,我们已完全了解了excel函数的逻辑函数,相信大家在实际工作中会想出更多更有用的运用。
excel函数应用之文本/日期/时间函数。
所谓文本函数,就是可以在公式中处理文字串的函数。例如,可以改变大小写或确定文字串的长度;可以替换某些字符或者去除某些字符等。而日期和时间函数则可以在公式中分析和处理日期值和时间值。
关于这两类函数的列表参看附表,这里仅对一些常用的函数做简要介绍。
一、文本函数。
一)大小写转换。
lower--将一个文字串中的所有大写字母转换为小写字母。
upper--将文本转换成大写形式。
proper--将文字串的首字母及任何非字母字符之后的首字母转换成大写。将其余的字母转换成小写。
这三种函数的基本语法形式均为函数名(text)。示例说明:
已有字符串为:please come here! 可以看到由于输入的不规范,这句话大小写乱用了。
通过以上三个函数可以将文本转换显示样式,使得文本变得规范。参见图1
lower(please come here!)=please come here!
upper(please come here!)=please come here!
proper(please come here!)=please come here! 图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 提取的字符数。
比如,从字符串"this is an apple."分别取出字符"this"、"apple"、"is"的具体函数写法为。
left("this is an apple",4)=this
right("this is an apple",5)=apple
mid("this is an apple",6,2)=is
图2三)去除字符串的空白。
在字符串形态中,空白也是一个有效的字符,但是如果字符串**现空白字符时,容易在判断或对比数据是发生错误,在excel中您可以使用trim函数清除字符串中的空白。
语法形式为:trim(text)其中text为需要清除其中空格的文本。
需要注意的是,trim函数不会清除单词之间的单个空格,如果连这部分空格都需清除的话,建议使用替换功能。比如,从字符串"my name is mary"中清除空格的函数写法为:trim("my name is mary")=my name is mary 参见图3
图3四)字符串的比较。
在数据表中经常会比对不同的字符串,此时您可以使用exact函数来比较两个字符串是否相同。该函数测试两个字符串是否完全相同。如果它们完全相同,则返回 true;否则,返回 false。
函数 exact 能区分大小写,但忽略格式上的差异。利用函数 exact 可以测试输入文档内的文字。语法形式为:
exact(text1,text2)text1为待比较的第一个字符串。text2为待比较的第二个字符串。举例说明:
参见图4
exact("china","china")=false
图4二、日期与时间函数。
在数据表的处理过程中,日期与时间的函数是相当重要的处理依据。而excel在这方面也提供了相当丰富的函数供大家使用。
一)取出当前系统时间/日期信息。
用于取出当前系统时间/日期信息的函数主要有now、today。
语法形式均为函数名()。
二)取得日期/时间的部分字段值。
如果需要单独的年份、月份、日数或小时的数据时,可以使用hour、day、month、year函数直接从日期/时间中取出需要的数据。具体示例参看图5。
比如,需要返回2001-5-30 12:30 pm的年份、月份、日数及小时数,可以分别采用相应函数实现。
year(e5)=2001
month(e5)=5
day(e5)=30
hour(e5)=12
图5此外还有更多有用的日期/时间函数,可以查阅附表。下面我们将以一个具体的示例来说明excel的文本函数与日期函数的用途。
三、示例:做一个美观简洁的人事资料分析表。
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位的身份证号码,甚至可适用于两者并存的情况。
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")
至此,我们对于文本函数、日期与时间函数已经有了大致的了解,同时也设想了一些应用领域。相信随着大家在这方面的不断研究,会有更广泛的应用。
Excel常用函数
sum 加總。語法 sum 儲存格 儲存格 連續儲存格的加總。sum 儲存格,儲存格,儲存格 不連續儲存格的加總。例1 sum a2 a20 加總儲存格a2至a20。例2 sum a5,a11,a13,b7,b18,b20 加總儲存格a5,a11,a13,b7,b18,b20數值總合。例3 sum ...
Excel常用函数
excel的数据处理功能在现有的文字处理软件中可以说是独占鳌头,几乎没有什么软件能够与它匹敌。而函数作为处理数据的一个最重要手段,在生活和工作实践中,却很少有人充分发挥它们的强大功能。excel提供的函数不仅涉及面广,而且种类多,本文所涉及的几个函数,就是日常工作中常用的。一 hyperlink函数...
Excel常用函数
excel2003常用函数一览表。sum 返回单元格区域中所有数据的和 erage 计算参数的算术平均数 参数可以是数值或包含数值的名称 数组或引用 if 执行真假值判断,根据对指定条件进行逻辑评价的真假而返回不同的结果 hyperlink 创建快捷方式,以便打开文档或网络驱动器,或连接intern...