文本字符是Excel中除了数字以外的另一种非常常用的数据类型,Excel也提供了大量的文本函数。利用这些函数我们可以用来判断字符串开头是否为数字、字符串是否同时包含了数字和英文、字符串是否包含了指定字符,可以用来转换英文字母的大小,可以用来删除字符串前后空格。下面咱们一起来学习下。
1.判断字符串开头是否为数字
CODE()函数可以将Excel中任意字符串中的第一个字符转换为ANSI字符集中对应的数字代码,然后可以通过判断数字代码的大小,来判断字符的类型。CODE()函数的语法结构为:CODE(TEXT),CODE()函数仅需要一个必选参数TEXT,该参数代表了要转换为数字代码的字符。
例子,某网站服务器数据变更,新服务要求会员名不能以数字开头,如果会员是以数字开头,则会被打上无效标志“×”。
通过查询ANSI字符集可知,数字0-9对应的数字编码是48-57。会员名要求不能以数字开头,那么只需要将会员名称的第一个字符转换为数字编码,只要这个数值在48-57之间,就被作上“×”标志。可以在C2单元格输入公式“=IF(AND(CODE(A2)>=48,CODE(A2)<=57),"×","")”,将公式向下填充到C23单元格,判断所有会员名是否有效。
该公式包含了3个函数,其中最内层的CODE()函数用于返回字符串的数字编码。这里我们直接将A2单元格作为其参数,也能获得正确结果,原因在于当CODE()函数的text参数为一个字符串时,函数仅返回字符串中第一个字符的数字编码。
2.随意转换字母的大小写
英文字母有大小写之分,如果要通过函数对英文字母的大小写进行转换,可以使用UPPER()函数和LOWER()函数。
如果要求英文名称书写必须规范,如输入单词时,首字母需要大写,可以用PROPER()函数自动将小写的首字母转换为大写。以上三个函数均包含一个必选参数text,text代表要进行编辑的字符。具体功能如下:
? UPPER()函数用于将给定字符串中所有英文小写转换为英文大写。
? LOWER()函数用于将给定字符串中所有英文大写转换为英文小写。
? PROPER()函数用于将小写字符的首字母转换为大写。如果字符串不包含英文,不进行转换,只有当字符串中包含英文单词,且单词首字母不是大写时,才能看到PROPER()函数的效果。
通过下面例子,可以轻松了解三个函数的用法。
3.字符串中是否同时包含了数字和英文
如果需要在一个文本中查找另一个文本的位置(区分字符的大小写),那么可以使用FIND()函数。
FIND()函数可以在指定的字符串中查找给定的字符(区分字符的大小写),并返回被查找字符在原字符串中首次出现的位置。FIND()函数的语法格式为:
FIND(find_text,within_text,[start_num])
从函数的语法格式中可以得知,FIND()函数包含两个必选参数find_text和within_text,以及一个可选参数start_num,各参数意义为:
? find_text:要在原字符串中查找的字符或字符串。
? within_text:要在其中查找find_text字符串的原字符串。
? start_num:指定要从within_text的第几个字符开始查找,如果省略此参数,则从第一个字符开始查找。
举个例子,某网站的注册密码至少由字母和数字两部分组成,否则需要提示修改密码。
分析思路:要判断密码中是否包含数字和字母,就需要在原密码字符串中分别查找数字和字母,如果两者都能找到,密码就不用更改,否则提示“请更改密码”。要精确查找某个字符,可以使用FIND()函数。由于需要查找字符串中是否包含数字和字母,我们可以使用CHAR()函数结合ROW()函数生成要查找的字符,并对查找的结果进行统计。如果找到,那么统计结果必定大于或等于1,若没有找到,那么统计结果必定等于0。通过AND()函数将两次查找的结果进行结合,从而判断密码是否需要修改。
具体步骤:在E2单元格中输入数组公式“{=IF(AND(COUNT(FIND(CHAR(ROW($48:$57)),C2))>=1,COUNT(FIND(CHAR(ROW($65:$122)),C2))>=1),"","请更改密码")}”,按“Ctrl+Shift+Enter”组合键结束数组公式。双击E2单元格右下角的自动填充柄,向下填充公式至E41单元格,判断其它用户的密码是否需要修改。
公式看似比较复杂,但还是比较好理解的。首先公式通过“ROW($48:$57)”返回一个48-57的自然数序列,并用CHAR()函数返回该序列数字对应的字符,得到0-9的常量数组。然后通过FIND()函数在C2单元格中分别查找0-9的数字,并生成一个数组,当C2中不包含查找的数字,会产生#VALUE!错误,再用COUNT()函数对这个数组进行统计,计算其中非错误值的个数,最后判断结果是否大于等于1。这就是公式红色部分的内容,蓝色部分与其大致相同,只是后部分用“CHAR(ROW($65:$122))”返回包含所有英文字母和部分符号的数组。当AND()函数的两个部分都返回TURE时,通过IF()函数返回一个空值,否则返回文本“请更改密码”。
4.字符串中是否包含了指定字符
SEARCH()函数可以在指定的字符串中查找给定的字符(不区分字符的大小写),并返回被查找字符在原字符串中首次出现的位置。SEARCH()函数的语法格式为:
SEARCH(find_text,within_text,[start_num])
从函数的语法格式中,SEARCH()函数包含两个必选参数find_text和within_text,以及一个可选参数start_num,各参数意义和FIND函数相同。
SEARCH()函数在查找字符串的过程中,不会区分英文字符的大小写,并且在find_text参数中,还可以使用通配符问号“?”和星号“*”,其中问号代表任意一个字符,星号代表任意多个字符。如果要查找实际的问号和星号,则需要在该字符前键入波形符“~”。
举个例子,某公司现在要统计出擅长PPT的员工数量,由于员工的书写不规范(同一单词有大写也有小写),并都在同一个单元格中,我们可以用SEARCH()函数进行查找,将查找的结果分配到一个数组中,再统计此数组中非错误值的数量。
具体步骤:在H1单元格输入数组公式“{=COUNT(SEARCH(F1,C2:C41))}”,按“Ctrl+Shift+Enter”组合键结束数组公式。
“SEARCH(F1,C2:C41)”部分表示在“C2:C41”单元格区域中搜索F1单元格的值,如果找到,会返回一个数值,否则返回错误值,即得到一个由数字和错误值组成的数组,最后使用COUNT()函数对此数组中非错误值进行统计,得到所需结果。
5.删除文本中前后两端的空格
某些字符串中可能包含有不需要的空格,为了字符串的精确性,可以通过TRIM()函数将其删除。该函数语法结构为TRIM(text),text表示要处理的文本字符串。
例如从网站导入的日期数据中包含空格,EXCEL就会自动将日期识别为文本,此时可以通过TRIM()函数进行处理。
由于下图中A列的日期前面包含空格,导致EXCEL不能正确识别,我们可以在B列通过TRIM()函数删除A列对应单元格字符串前的空格,并以乘1的形式将其转化为代表日期的序列,将该区域设置为日期类型即可正确显示。
最后,我们再巩固下,找出字符对应的数字编码用CODE()函数,随意转换字母的大小写用UPPER()、LOWER()和PROPER()函数,查找文本的位置用FIND()、SEARCH()函数,删除文本前后两端的空格用TRIM()函数。