用于字符串的查找与位置返回的文本函数包括:查找目标字符所在的位置以及从左侧提取字符、从右侧提取字符、从任意指定位置提取等。本节中的前4个(FIND、FINDB、SEARCH、SEARCHB)是查找字符的位置函数,后几个是提取文本函数(LEFT、LEFTB、RIGHT、RIGHTB、MID、MIDB)。
函数功能: FIND用于在第二个文本串中定位第一个文本串,并返回第一个文本串的起始位置的值,该值从第二个文本串的第一个字符算起。
函数语法: FIND(find_text,within_text,[start_num])
参数解析: √find_text:必需,要查找的文本。
√within_text:必需,包含要查找文本的文本。
√start_num:可选,指定要从其开始搜索的字符。within_text中的首字符是编号为1的字符。如果省略start_num,则假设其值为1。
例1:从产品编码中查找分隔线 “-” 的位置
产品编码中都包含有 “-” 符号,现在需要判断各产品编码中 “-” 符号的起始位置在哪里。可以使用FIND函数来判断。
① 将光标定位在单元格C2中,输入公式: =FIND("-",A2) ,如图7-1所示。
图 7-1
② 按Enter键,即可提取第一个产品编码中的 “-” 符号的位置,如图7-2所示。
图 7-2
③ 选中C2单元格,向下填充公式至C8单元格,即可一次提取出其他产品编码中的 “-” 符号的位置,如图7-3所示。
图 7-3
例2:从编码中提取出品牌名称
本例表格的A列记录了产品的完整编码,包括品牌名称以及类别编码等信息。现在需要单独将品牌提取出来,由于品牌名称字数不等,需要结合LEFT函数和AND函数来能实现。
① 将光标定位在单元格C2中,输入公式: =LEFT(A2,FIND("-",A2)-1) ,如图7-4所示。
② 按Enter键,即可提取出第一个产品的品牌名称,如图7-5所示。
图 7-4
③ 选中C2单元格,向下填充公式至C8单元格,即可一次性提取出其他产品的品牌名称,如图7-6所示。
图 7-5
图 7-6
① 使用FIND函数找到A2单元格中 “-” 的位置,并用返回的值减去1。如第一个产品编码中 “-” 的位置是4,再减去数值1,得到数值为3。
② 使用LEFT函数从左边开始提取字符,提取长度为第 ① 步的返回值。即可提取A2单元格从左边起前3个字符,也就是产品品牌名称。以此类推,即可分别提取出其他产品品牌名称。
函数功能: FINDB函数是用于在第二个文本串中定位第一个文本串,并返回第一个文本串的起始位置的值,该值从第二个文本串的第一个字符算起。
函数语法: FINDB(find_text,within_text,start_num)
参数解析: √find_text:要查找的文本。
√within_text:包含要查找文本的文本。
√start_num:指定要从其开始搜索的字符。within_text中的首字符是编号为1的字符。如果省略start_num,则假设其值为1。
例:返回字符串中 “人” 字所在的位置
本例需要返回A列各单元格的字符串中 “人” 字所在的位置,可以使用FINDB函数来计算。
① 将光标定位在单元格B2中,输入公式: =FINDB("人",A2) ,如图7-7所示。
② 按Enter键,即可返回A2单元格中 “人” 字所在的位置,如图7-8所示。
③ 选中B2单元格,向下填充公式至B5单元格,即可返回其他单元格中 “人” 字所在的位置,如图7-9所示。
图 7-7
图 7-8
图 7-9
函数功能: SEARCH函数用于在第二个文本字符串中查找第一个文本字符串,并返回第一个文本字符串的起始位置的值,该值从第二个文本字符串的第一个字符算起。
函数语法: SEARCH(find_text,within_text,[start_num])
参数解析: √find_text:必需,要查找的文本。
√within_text:必需,要在其中搜索find_text参数的值的文本。
√start_num:可选,within_text参数中从之开始搜索的字符编号。
SEARCH和FIND函数都是查找位置的函数,但二者也存在区别,主要有如下两点。
√FIND函数区分大小写,而SEARCH函数则不区分,如图7-10所示。这里的公式查找的是小写的n,SEARCH函数不区分,FIND函数区分,所以找不到。
图 7-10
√SEARCH函数支持通配符,而FIND函数不支持,如图7-11所示。例如,公式=SEARCH("n?",A2),返回的则是以由n开头的3个字符组成的字符串第一次出现的位置。这里的公式中查找对象中使用了通配符,SEARCH函数可以包含,FIND函数不能包含。
图 7-11
例:从产品名称中提取品牌名称
产品名称中包含有品牌名称,现在要求将品牌批量提取出来。
① 将光标定位在单元格D2中,输入公式: =MID(B2,SEARCH("vov",B2),3) ,如图7-12所示。
图 7-12
② 按Enter键,即可提取第一个产品编码中的品牌名称,如图7-13所示。
图 7-13
③ 选中D2单元格,向下填充公式至D8单元格,即可一次提取出其他产品编码中的品牌名称,如图7-14所示。
图 7-14
① 使用SEARCH函数查找vov在B2单元格字符串中的位置。
② 使用MID函数(MID返回文本字符串中从指定位置开始的特定数目的字符)从B2单元格中提取字符,从第 ① 步返回值处提取,提取长度为3个字符。
函数功能: SEARCHB函数用于在第二个文本串中定位第一个文本串,并返回第一个文本串的起始位置的值,该值从第二个文本串的第一个字符算起。
函数语法: SEARCHB(find_text,within_text,start_num)
参数解析: √find_text:要查找的文本。
√within_text:是要在其中搜索find_text的文本。
√start_num:是within_text中从之开始搜索的字符编号。
例:返回指定字符在文本字符串中的位置
在如图7-15所示表格中,针对A列中的字符串,分别使用B列中对应的公式,得出的字节数如C列所示。
图 7-15
函数功能: LEFT函数用于返回从文本左侧开始指定个数的字符。
函数语法: LEFT(text,[num_chars])
参数解析: √text:必需,包含要提取的字符的文本字符串。
√num_chars:可选,指定要由LEFT提取的字符的数量。
例1:提取出类别编码
本例表格的B列记录了产品的完整编码,其中包含类别编码(前四位)以及货号。要求只将类别编码提取出来,显示在A列中。
① 将光标定位在单元格A2中,输入公式: =LEFT(B2,4) ,如图7-16所示。
图 7-16
② 按Enter键,即可返回B2单元格产品类别编码,如图7-17所示。
图 7-17
③ 选中A2单元格,向下填充公式至A8单元格,即可一次性返回其他产品的类别编码,如图7-18所示。
图 7-18
例2:统计各个地区参会的人数合计
本例需要为公司各区域参会情况表,需要统计出各个地区参会的人数,可以使用LEFT函数来计算。
① 将光标定位在单元格E1中,输入公式: =SUM((LEFT($A$2:$A$8,2)="安徽")*$B$2:$B$8) ,如图7-19所示。
图 7-19
② 按Ctrl+Shift+Enter快捷键,即可统计出安徽地区参会人数,如图7-20所示。
图 7-20
③ 将光标定位在单元格E2中,输入公式: =SUM((LEFT($A$2:$A$8,2)="上海")*$B$2:$B$8) ,如图7-21所示。
图 7-21
④ 按Ctrl+Shift+Enter快捷键,即可统计出上海地区参会人数,如图7-22所示。
图 7-22
① 使用LEFT函数依次提取A2:A8单元格的前两个字符,并判断它们是否为 “安徽” ,如果是返回TRUE,否则返回FALSE,返回的是一个数组(由TRUE和FALSE组成的数组)。
② 将第 ① 步数组中TRUE值对应在B2:B8单元格区域中的数值返回,也就是返回具体的分组数字,即由{13;16;18}组成的数组,再将这个数组内的数字使用SUM函数进行求和运算,即13+16+18=47。
例3:根据商品的名称进行一次性调价
本例表格的A列中显示了不同产品的名称,C列为各类产品的原价,现在需要将 “美白面霜” 产品都上调50元,其他类别产品上调20元。
① 将光标定位在单元格D2中,输入公式: =IF(LEFT(A2,4)="美白面霜",C2+50,C2+20) ,如图7-23所示。
图 7-23
② 按Enter键,即可计算出该产品调整后的价格,如图7-24所示。
③ 选中D2单元格,向下填充公式至D8单元格,即中一次性得出其他调整后的价格,如图7-25所示。
图 7-24
图 7-25
① 使用LEFT函数提取A2单元格的前4个字符。
② 使用IF函数判断第 ① 步中返回的字符是否是 “美白面霜” ,如果是则返回C2+50;如果不是则返回C2+20。
例4:从地址提取出省名
本例表格的A列记录了收件人的具体地址,现在需要单独将省的名称提取出来。
① 将光标定位在单元格B2中,输入公式: =LEFT(A2,FIND("省",A2)) ,如图7-26所示。
图 7-26
② 按Enter键,即可提取出第一个地址所在的省名,如图7-27所示。
③ 选中B2单元格,向下填充公式至B7单元格,即可一次性提取出其他收件人所属省市名称,如图7-28所示。
图 7-27
图 7-28
① 使用FIND函数查找A2单元格中 “省” 字在地址中的位置。
② 使用LEFT函数将第一个字开始到该位置结束的所有字符提取出来。即从左侧起将第 ① 步中 “省” 字前的所有字符提取出来。
函数功能: LEFTB函数是基于所指定的字节数返回文本字符串中的第一个或前几个字符。
函数语法: LEFTB(text,num_chars)
参数解析: √text:是包含要提取的字符的文本字符串。
√num_chars:指定要由LEFT提取的字符的数量。num_chars必须大于或等于零。如果num_chars大于文本长度,则LEFT返回全部文本;如果省略num_chars,则假设其值为1。
例:以字节数从左侧提取字符串
在如图7-29所示表格中,针对A列中的字符串,分别使用C列中对应的公式,提取字符串如B列所示。
图 7-29
函数功能: RIGHT函数用于根据所指定的字符数返回文本字符串中最后一个或多个字符。
函数语法: RIGHT(text,[num_chars])
参数解析: √text:必需,包含要提取字符的文本字符串。
√num_chars:可选,指定要由RIGHT提取的字符的数量。
例1:提取商品的产地
如果要提取字符串在右侧,并且要提取的字符宽度一致,可以直接使用LEFT函数提取。例如在下面的表格要从商品全称中提取产地。
① 将光标定位在单元格D2中,输入公式: =RIGHT(B2,4) ,如图7-30所示。
图 7-30
② 按Enter键,可提取B2单元格中字符串的最后4个字符,即产地信息,如图7-31所示。
③ 选中D2单元格,向下填充公式至D6单元格,即可一次性提取出其他商品产地名称,如图7-32所示。
图 7-31
图 7-32
例2:从客户代表全称中提取出姓名
本例表格统计了客户的公司名称以及人员姓名,要求从其中只提取出客户姓名。
① 将光标定位在单元格B2中,输入公式: =RIGHT(A2,LEN(A2)-FIND(":",A2)) ,如图7-33所示。
图 7-33
② 按Enter键,即可提取出A2单元格中的姓名,如图7-34所示。
图 7-34
③ 选中B2单元格,向下填充公式至B5单元格,即可一次性提取出其他客户姓名,如图7-35所示。
图 7-35
在输入本例公式时,公式中的 “:” 号要与A2单元格中的 “:” 号在相同的输入状态下输入,即若A2单元格中的 “:” 号在英文状态下输入的,那么公式中的 “:” 号也要在英文状态下输入,反之亦然。本例A2单元格中的 “:” 号是在英文状态下输入的,故公式中的 “:” 号也要在英文状态下输入。
① 使用LEN函数返回A2单元格字符串的长度,即12。
② 使用FIND函数返回 “:” 号在A2单元格中的位置,即9。
③ 使用RIGHT函数从A2单元格的右侧开始提取,提取的长度为第 ① 步返回减去第 ② 步结果的值。即从右侧开始提取12-9=3个字符数,即 “张佳佳” 。
函数功能: RIGHTB函数是根据所指定的字节数返回文本字符串中最后一个或多个字符。
函数语法: RIGHTB(text,num_bytes)
参数解析: √text:是包含要提取字符的文本字符串。
√num_bytes:按字节指定要由RIGHTB提取的字符的数量。num_bytes必须大于或等于零。如果num_bytes大于文本长度,则RIGHT返回所有文本;如果省略num_ bytes,则假设其值为1。
例:返回文本字符串中最后指定的字符
在如图7-36所示表格中,针对A列中的字符串,分别使用C列中对应的公式,提取字符串如B列所示。
图 7-36
函数功能: MID函数用于返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。
函数语法: MID(text,start_num,num_chars)
参数解析: √text:必需,包含要提取字符的文本字符串。
√start_num:必需,文本中要提取的第一个字符的位置。文本中第一个字符的start_num为1,以此类推。
√num_chars:必需,指定希望MID从文本中返回字符的个数。
例1:提取出产品的类别编码
本例表格的A列记录了不同产品的具体产品编码,产品编码是由类别编码和数字组成。现在需要单独提取出字母编码。
① 将光标定位在单元格C2中,输入公式: =MID(A2,5,6) ,如图7-37所示。
图 7-37
② 按Enter键,即可提取出第一个产品的类别编码,如图7-38所示。
③ 选中C2单元格,向下填充公式至C8单元格,即可一次性提取出其他产品的类别编码,如图7-39所示。
图 7-38
图 7-39
例2:从身份证号码中提取出生年份
身份证号码有18位,因此要使用MID函数从身份证号码中提取出生年份,可以配合IF函数与LEN函数来实现。
① 将光标定位在单元格C2中,输入公式: =MID(B2,7,4) ,如图7-40所示。
图 7-40
② 按Enter键,即可提取出第一位员工的出生年份,如图7-41所示。
③ 选中C2单元格,向下填充公式至C6单元格,即可一次性提取出其他员工的出生年份,如图7-42所示。
图 7-41
图 7-42
=MID(B2,7,4)
MID(B2,7,4),从身份证号码第7位开始提取,并提取四位字符,即身份证号码中的年份值。
例3:从身份证号码中提取性别
身份证号码中还包含了持有者的性别信息,本例需要根据身份证号码返回员工的性别。
① 将光标定位在单元格C2中,输入公式: =IF(MOD(MID(B2,17,1),2)=1,"男","女") ,如图7-43所示。
图 7-43
② 按Enter键,即可提取出第一位员工的性别,如图7-44所示。
③ 选中C2单元格,向下填充公式至C6单元格,即可一次性提取出其他员工的性别,如图7-45所示。
图 7-44
图 7-45
① MID(B2,17,1),从身份证号码第17位开始提取,并提取一位字符,即用来判断性别的数字,B2中提取的数字为2。
② 使用MOD函数判断第 ① 步提取的值是否能被2整除,整除返回结果为0;不能整除返回结果为1。即判断其是奇数还是偶数。
③ 不能整除返回 “男” ,否则返回 “女” 。由于B2中的数字2是个偶数,所以返回性别为 “女” ,以此类推,返回其他员工的性别。
函数功能: MIDB函数是根据你指定的字节数(一个字符等于两个字节),返回文本字符串中从指定位置开始的特定数目的字符。
函数语法: MIDB(text,start_num,num_bytes)
参数解析: √text:是包含要提取字符的文本字符串。
√start_num:是文本中要提取的第一个字符的位置。文本中第一个字符的start_num为1,以此类推。
√num_bytes:指定希望MIDB从文本中返回字符的个数(按字节)。
例:从文本字符串中提取指定位置的文本信息
在如图7-46所示表格中,针对A列中的字符串,分别使用C列中对应的公式,提取字符串如B列所示。
图 7-46