一、LEFT函数与RIGHT函数——左(右)截取器
1.函数技能
LEFT函数与RIGHT函数的作用是分别从一个字符串的左(右)开始截取用户指定位数的信息。在进行分割代码等操作时,较为常用。
2.语法格式
LEFT(待截取的字符串,截取的位数)
RIGHT(待截取的字符串,截取的位数)
其中:
(1)待截取的字符串可以为文本、数值、单元格地址以及公式等。(2)截取的位数可以为数值、单元格地址以及公式等。
示例:=LEFT("YF20140501",5),结果为:YF201。
=RIGHT("YF20140501",5),结果为:40501。
3.注意事项
(1)每个空格均将视为一个字符串。
(2)当待截取的字符串为公式或带公式的单元格地址时,其统计的字符串为公式计算的值(而不是公式的长度)。例如:=RIGHT(103+5,2),其结果为“08”,而不是“+5”。
上述两点针对任意字符串的截取和长度(字符数量)统计均适用。
LEFT函数(RIGHT函数)和后面将要登场的LEN函数配合,可以处理一些相对复杂但是具有一定规律的字符串截取。稍后我们会有相关介绍。
二、MID函数——途中截取器
1.函数技能
MID函数是从一组数据的左起任意位置开始,截取任意位数的工具。比如:从身份证号中提取生日信息时,就需要靠它。
2.语法格式
MID(待截取的字符串,起点的位数,截取的位数)
其中:
(1)待截取的字符串可以为文本、数值、单元格地址以及公式等。
(2)起点的位数是指需要截取的第一个字符是该字符串左起的第几位。
示例:A1单元格为张三的身份证号:510202198505191234,我们要在B1单元格显示其生日信息。
B1单元格的公式为:=MID(A1,7,8),结果为:19850519。
如果我们要让其生日信息反映为某年某月某日,则需要借助焊接工“&”了。
B2单元格的公式为:=MID(A1,7,4)&"年"&MID(A1,11,2)&"月"&MID(A1,13,2)&"日",结果为:1985年05月19日。
三、LEN函数和LENB函数——求字符串(字节)长度
1.函数技能
LEN函数能准确反馈出一个文本字符串的长度。而LENB函数则是统计一个文本字符串的字节的长度。
一般来说,空格、数字、字母以及字母输入模式下的标点,一个字符就是一个字节。而对于汉字以及汉字输入模式下的标点(以下统称为汉字型字符)来说,一个字符则包含了两个字节。
注意,省略号(……)和破折号(——)等占用两个“字节”的汉语标点的字节数应为4。
2.语法格式
LEN(文本字符串)
LENB(文本字符串)
其中:待丈量的文本字符串可以为文本、数值、单元格地址以及公式等。
3.拓展应用
有时,直接用LEFT函数(RIGHT函数)很难从字符串中截取我们想要的信息,这个时候LEN函数往往可以雪中送炭。
例如,图4-40是逸凡公司的固定资产目录,其中项目信息的构成为6位数字代码加固定资产名称。现在我们需要提取固定资产的名称,很显然只靠LEFT函数或RIGHT函数是搞不定的,而且代码和名称之间没有固定的分隔符,也无法使用替换功能批量解决。但是我们可以看出,代码部分是很有规律的——它们的长度一致。这样我们让LEN函数也参与进来,就好办了。
图4-40 固定资产目录(代码有规律)我们借用数学中逆运算的原理衍生可知:
项目的总长度-待删除代码长度(6)=固定资产名称的长度(靠右)
假设我们在原表的C列列示固定资产的名称。
C4单元格的公式为:=RIGHT(A4,LEN(A4)-6)
执行列填充后,即可完成固定资产名称的剥离(见图4-41)。
图4-41 LEN函数配合RIGHT函数实施字符串截取如果上述固定资产的代码长度也不一致(如图4-39),我们就需要利用LEN函数和LENB函数的差异来进行处理了。
由于一个汉字对应的字节数(2)比其字符串长度(1)多1,假设某字符串记录在 A1单元格,则有:
LENB(A1)-LEN(A1)=汉字型字符的个数
由此,我们可以躲开数字代码的长度进行项目名称的截取了。当然,如果资产名称中有非汉字元素,这一招就失效了。
C3单元格的公式为:=RIGHT(A4,LENB(A4)-LEN(A4))
执行列填充后,即可完成固定资产名称的剥离(见图4-42)。
图4-42 LEN函数配合LENB函数实施字符串截取四、EXACT函数——比对高手
请问:有A1:A1000单元格和B1:B1000单元格两列数据。现在需要删除同一行数据不相等的记录,该怎么办?
1.函数技能
EXACT函数用于比对两字符串是否一致。如果两个字符串完全一致,它将提示“真”(TRUE),否则将提示“假”(FALSE)。当然,既然是比对,那它对字母自然是要严格区别大小写的。
2.语法格式
EXACT(字符串1,字符串2)
其中:字符串可以为文本、数值、单元格地址以及公式等。
3.提问解答
该问题的核心是判断两组数据是否相等,我们可以利用EXACT函数的特长来完成这个任务。假设我们在C列进行判断。
C1单元格的公式为:=EXACT(A1,B1)
执行列填充后,所有A列和B列同行不同数据的记录,都将在对应的C列显示“FALSE”。此时,我们通过对C列进行筛选,就可以轻松清理不受待见的记录了。
实际上一般的文本比对,可用“=”代替EXACT函数,比如上面的公式可改成:=A1=B1。但是使用“=”对比时,不区分大小写。
五、FIND函数——字符位置探查器
1.函数技能
FIND函数的技能是查找某个字符串在另外一个字符串中第一次出现的位置。查找将区分大小写。
2.语法格式
FIND(待查找的字符串,包含待查找字符串的字符串,查找起始位置)
其中:
(1)待查找的字符串及包含待查找字符串的字符串可以是文本、数值、单元格地址或公式等。
(2)查找的起始位置是指从包含待查找字符串的字符串的第几位字符开始查找,并不是指以该字符作为计算查找位置的起点。该参数空缺时,默认为1。
示例:=FIND("456","123456"),其结果为:4。
=FIND("456","123456",4),其结果为:4,而不是1。
=FIND("456","123456",5),其结果为:#VALUE!。
需要说明的是,查找起始位置为4,表示从“123456”的第4位(字符“4”)开始查找,但是查找的结果仍然是字符串“456”在字符串“123456”中第一次出现的位置(4),而不是在字符串“456”中第一次出现的位置(1)。而当查找起始位置为5时,则表示从“123456”的第5位(字符“5”)开始查找,此时相当于是字符串“56”中查找字符串“456”第一次出现的位置(无),返回为#VALUE!。
(3)待查找字符串在被待查找字符串中多次出现时,函数仅返回满足查找条件的第一个位置。
示例:=FIND("2","123234"),其结果为:2。
=FIND("2","123234",3),其结果为:4。
3.拓展应用
我们仍然来讨论项目代码的删除问题。
如果项目代码中代码与名称分隔符以及名称中均使用了相同的符号(见图4-43)。FIND函数就可以发挥作用了。
图4-43 固定资产目录我们可以用FIND函数找到项目代码与名称分隔符“-”出现的位置。不难看出,这个位置就代表了非名称字符串的长度。由于代码中的“-”先声夺人,所以在使用FIND函数查找代码与名称分隔符时,需要使用第三参数以跳过代码中“-”的干扰。
C4单元格的公式为:=RIGHT(A4,LEN(A4)-FIND("-",A4,6))
执行列填充后,即可完成资产名称的截取(见图4-44)。
图4-44 FIND函数参与不规则的名称截取当然,如果代码中没有那个固定的“-”,FIND函数就傻眼了。所以我们不要喜新厌旧,LEN函数和LENB函数依然还是要铭记在心中。
网友评论