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!
(⼆)取出字符串中的部分字符
Excel函数应⽤回顾
● Excel函数应⽤之逻辑函数
● Excel函数应⽤之数学和三⾓函数
● Excel函数应⽤之函数简介
您可以使⽤Mid、Left、Right等函数从长字符串内获取⼀部分字符。具体语法格式为
LEFT函数:LEFT(text,num_chars)其中Text是包含要提取字符的⽂本串。Num_chars指定要由 LEFT 所提取的字符数。
mid函数提取年月日
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
(三)去除字符串的空⽩
在字符串形态中,空⽩也是⼀个有效的字符,但是如果字符串中出现空⽩字符时,容易在判断或对⽐数据是发⽣错误,在Excel中您可以使⽤Trim函数清除字符串中的空⽩。
语法形式为:TRIM(text)其中Text为需要清除其中空格的⽂本。
需要注意的是,Trim函数不会清除单词之间的单个空格,如果连这部分空格都需清除的话,建议使⽤
替换功能。⽐如,从字符串"My name is Mary"中清除空格的函数写法为:TRIM("My name is Mary")=My name is Mary 参见图3
(四)字符串的⽐较
在数据表中经常会⽐对不同的字符串,此时您可以使⽤EXACT函数来⽐较两个字符串是否相同。该函数测试两个字符串是否完全相同。如果它们完全相同,则返回 TRUE;否则,返回 FALSE。函数 EXACT 能区分⼤⼩写,但忽略格式上的差异。利⽤函数 EXACT 可以测试输⼊⽂档内的⽂字。语法形式为:EXACT(text1,text2)Text1为待⽐较的第⼀个字符串。Text2为待⽐较的第⼆个字符串。举例说明:参见图4
EXACT("China","china")=False
⼆、⽇期与时间函数
在数据表的处理过程中,⽇期与时间的函数是相当重要的处理依据。⽽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
此外还有更多有⽤的⽇期/时间函数,可以查阅附表。下⾯我们将以⼀个具体的⽰例来说明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位的⾝份证号码,甚⾄可适⽤于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")
⾄此,我们对于⽂本函数、⽇期与时间函数已经有了⼤致的了解,同时也设想了⼀些应⽤领域。相信随着⼤家在这⽅⾯的不断研究,会有更⼴泛的应⽤。
附⼀:⽂本函数
函数名函数说明语法
ASC将字符串中的全⾓(双字节)英⽂字母更改为半⾓(单字节)字符。ASC(text)
CHAR 返回对应于数字代码的字符,函数 CHAR 可将其他类型计算机⽂件中的代码转换为
字符。
CHAR(number)
CLEAN 删除⽂本中不能打印的字符。对从其他应⽤程序中输⼊的字符串使⽤ CLEAN 函数,
将删除其中含有的当前操作系统⽆法打印的字符。例如,可以删除通常出现在数据⽂
件头部或尾部、⽆法打印的低级计算机代码。
CLEAN(text)
CODE返回⽂字串中第⼀个字符的数字代码。返回的代码对应于计算机当前使⽤的字符集。CODE(text)
CONCATENATE将若⼲⽂字串合并到⼀个⽂字串中。CONCATENATE (text1,text2,...) DOLLAR依照货币格式将⼩数四舍五⼊到指定的位数并转换成⽂字。DOLLAR 或 RMB(number,decimals)
EXACT 该函数测试两个字符串是否完全相同。如果它们完全相同,则返回 TRUE;否则,返
回 FALSE。函数 EXACT 能区分⼤⼩写,但忽略格式上的差异。利⽤函数 EXACT
可以测试输⼊⽂档内的⽂字。
EXACT(text1,text2)
FIND FIND ⽤于查其他⽂本串 (within_text) 内的⽂本串 (find_text),并从 within_text
的⾸字符开始返回 find_text 的起始位置编号。
FIND(find_text,within_text,start_num)
FIXED 按指定的⼩数位数进⾏四舍五⼊,利⽤句点和逗号,以⼩数格式对该数设置格式,并
以⽂字串形式返回结果。
FIXED(number,decimals,no_commas)
JIS将字符串中的半⾓(单字节)英⽂字母或⽚假名更改为全⾓(双字节)字符。JIS(text)
LEFT LEFT 基于所指定的字符数返回⽂本串中的第⼀个或前⼏个字符。
LEFTB 基于所指定的字节数返回⽂本串中的第⼀个或前⼏个字符。此函数⽤于双字节
字符。
LEFT(text,num_chars)
LEFTB(text,num_bytes)
LEN LEN 返回⽂本串中的字符数。
LENB 返回⽂本串中⽤于代表字符的字节数。此函数⽤于双字节字符。LEN(text) LENB(text)
LOWER将⼀个⽂字串中的所有⼤写字母转换为⼩写字母。LOWER(text)
MID MID 返回⽂本串中从指定位置开始的特定数⽬的字符,该数⽬由⽤户指定。
MIDB 返回⽂本串中从指定位置开始的特定数⽬的字符,该数⽬由⽤户指定。此函数
⽤于双字节字符。
MID(text,start_num,num_chars)
MIDB(text,start_num,num_bytes)
PHONETIC提取⽂本串中的拼⾳ (furigana) 字符。PHONETIC(reference)
PROPER 将⽂字串的⾸字母及任何⾮字母字符之后的⾸字母转换成⼤写。将其余的字母转换成
⼩写。
PROPER(text)
REPLACE REPLACE 使⽤其他⽂本串并根据所指定的字符数替换某⽂本串中的部分⽂本。
REPLACEB 使⽤其他⽂本串并根据所指定的字符数替换某⽂本串中的部分⽂本。此
函数专为双字节字符使⽤。
REPLACE(old_text,start_num,num_chars,new_text)
REPLACEB(old_text,start_num,num_bytes,new_text)
REPT 按照给定的次数重复显⽰⽂本。可以通过函数 REPT 来不断地重复显⽰某⼀⽂字串,
对单元格进⾏填充。
REPT(text,number_times)
RIGHT RIGHT 根据所指定的字符数返回⽂本串中最后⼀个或多个字符。
RIGHTB 根据所指定的字符数返回⽂本串中最后⼀个或多个字符。此函数⽤于双字节
字符。
RIGHT(text,num_chars)
RIGHTB(text,num_bytes)
SEARCH SEARCH 返回从 start_num 开始⾸次到特定字符或⽂本串的位置上特定字符的编
号。使⽤ SEARCH 可确定字符或⽂本串在其他⽂本串中的位置,这样就可使⽤ MID
或 REPLACE 函数更改⽂本。
SEARCHB 也可在其他⽂本串 (within_text) 中查⽂本串 (find_text),并返回
find_text 的起始位置编号。此结果是基于每个字符所使⽤的字节数,并从
start_num 开始的。此函数⽤于双字节字符。此外,也可使⽤ FINDB 在其他⽂本串
中查⽂本串。
SEARCH(find_text,within_text,start_num)
SEARCHB(find_text,within_text,start_num)
SUBSTITUTE 在⽂字串中⽤ new_text 替代 old_text。如果需要在某⼀⽂字串中替换指定的⽂本,
请使⽤函数 SUBSTITUTE;如果需要在某⼀⽂字串中替换指定位置处的任意⽂本,
请使⽤函数 REPLACE。
SUBSTITUTE(text,old_text,new_text,instance_num)
T将数值转换成⽂本。T(value)
TEXT将⼀数值转换为按指定数字格式表⽰的⽂本。TEXT(value,format_text)
TRIM 除了单词之间的单个空格外,清除⽂本中所有的空格。在从其他应⽤程序中获取带有
不规则空格的⽂本时,可以使⽤函数 TRIM。
TRIM(text)
UPPER将⽂本转换成⼤写形式。UPPER(text)
VALUE将代表数字的⽂字串转换成数字。VALUE(text)
WIDECHAR将单字节字符转换为双字节字符。WIDECHAR(text)
YEN使⽤ ¥(⽇圆)货币格式将数字转换成⽂本,并对指定位置后的数字四舍五⼊。YEN(number,decimals)
附⼆、⽇期与时间函数
函数名函数说明语法
DATE返回代表特定⽇期的系列数。DATE(year,month,day)
DATEDIF计算两个⽇期之间的天数、⽉数或年数。DATEDIF(start_date,end_date,unit) DATEVALUE函数 DATEVALUE 的主要功能是将以⽂字表⽰的⽇期转换成⼀个系列数。DATEVALUE(date_text)
DAY返回以系列数表⽰的某⽇期的天数,⽤整数 1 到 31 表⽰。DAY(serial_number)
按照⼀年 360 天的算法(每个⽉以 30 天计,⼀年共计 12 个⽉),返回两⽇期间相差的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论