Excel常⽤的字符串公式
在Excel中,字符串处理是经常碰到的事情。例如根据×××号获取出⽣年⽉、性别等信息。微软已经为我们提供了不少相关的字符串处理公式。我划分⼏个部分给⼤家讲解。
1、字符串基础
关键字:双引号、&、len、lenb
在公式中,Excel使⽤两个双引号表⽰字符串。例如,= "123ab"。其中123ab是表⽰字符串。
如果有两个字符串(或者两个单元格内容)需要组合成新的字符串内容,可以使⽤&符号合并。例如:
= "123" & "ab"
将得到123ab。你可以尝试合并两个单元格的内容。
另外,有些字符串处理逻辑需要知道字符串的长度。这个可以使⽤len函数,例如:
字符串比较函数实现
= len("123ab")
结果得到5,共有5个字符。待会在截取字符串可以进⼀步结合其他函数使⽤,例如截取到倒数第2个字符等等。
上⾯关键字还写着⼀个lenb。lenb也是获取字符串长度的,不过lenb⽐len多了⼀个字母,获取到的长度可能会⽐len长。(我这么说是为了避免⼤家学习的时候混淆这两个函数。)如下两个公式:
= len("你好")= lenb("你好")
分别得到2和4。len计算的是字符数,有⼏个字符就得到⼏。⽽lenb是计算字节数,1个汉字占2个字节,所以得到4。⽽数字和字母只占1个字节,可以利⽤该特性提取中⽂内容。这个有兴趣可以⾃⾏了解⼀下。
2、截取字符串
关键字:left、right、mid
字如其意,截取字符串的函数有3个:left、right、mid。分别是从左边截取、从右边截取和从中间截取。
举个栗⼦,有这么⼀个随便编造的×××号:445366************。若有雷同,纯属有缘。(在单元格输⼊超过15位的数字,需要加个单引号标记为⽂本)
在18位的前6位是籍贯,第7位到14位的8位数字是出⽣年⽉。最后4位是顺序码,⾥⾯还包含性别和校验码。
我们可以使⽤left函数获取前6位数字:
left函数很简单,两个参数:第1个参数是内容;第2个参数是从左边数起要获取(截取)多少个字符。
right函数也⼀样,两个参数:第1个参数是内容;第2个参数是从右边数起要获取(截取)多少个字符。例如获取上⾯×××号后4位:
⽽mid函数要多⼀个参数,因为我们要指明从哪个字符开始截取,截取都多个字符。mid公式格式为
= mid(内容,从第⼏个字符开始,获取多少个字符)
那么,获取上⾯那个随意的×××号的出⾝年⽉⽇公式如下:
当然,19921012很紧凑,可以使⽤text函数格式化⼀下。这个下⾯提到text再讲,公式先学会使⽤再拓展。
我们回头看看上⾯说的截取到倒数第2个字符。从左边截取的left函数需要知道到底截取多少个字符,倒数第2个字符的长度⽐字符串总长度少1个。结合len函数可以实现该需求:
= len(A1, len(A1)-1)
3、内容查
关键字:find
内容查也是经常碰到的问题。有时候只是查判断是否包含某些内容;有时候还要判断有写内容再提取。各种各样的需求都⽤,经常需要结合各种字符串函数进⾏处理。
find格式:=find(查的内容,原⽂,[从哪个位置开始查])
最后⼀个参数可以省略不写,默认从第1个字符开始查。例如,判断A列是否包含字母a:
⼤家可以看到若查得到内容,则返回⼀个数字。该数字表明查到的位置。若查不到内容,则返回⼀个错误。这种结果不是很友好。优化⼀下:
⽤iserr函数判断结果是否为错误。若为错误,返回True;不是错误,返回False。我们需要到内容的话,返回True;不到,则返回False。这个和我们预想结果相反,所以加个not函数处理。
再看看另外⼀个需求,例如获取A列中括号的内容:
中括号的位置和中括号内容的长度未知。我们⽆法直接使⽤mid函数获取内容,需要先知道两个中括号的位置,才能使⽤mid截取。上⾯提到find的返回结果为查字符串的位置。分别到"["和"]"的位置:
B列公式:=FIND("[",A1)C列公式:=FIND("]",A1)
再根据这两个位置获取内容:
4、替换
关键字:substitute、replace
替换虽然有两个函数,但replace很少⽤。这⾥就不讲了,⾃⾏了解⼀下。substitute经常被使⽤,曝光率很⾼。该函数格式如下:=substitute(原⽂,要被替换的内容,新内容,[替换第⼏个])
第4个参数是可选。若不填写,表⽰全部替换。例如,"ABC"替换成"DDB":
这是最基本的玩法。还可以拓展⼀些玩法,例如判断某些内容出现⼏次。基本逻辑是把内容替换成空字符。这样可以⽐较新旧内容的长度,从⽽知道替换了⼏处。例如判断A列有多少个短横线:
这个只是⼀个字符的情况。若多个字符,需要除以字符长度。例如,判断有多少组“--”:
还可以利⽤最后⼀个参数,实现其他各种需求。这些可⾃⾏研究。
5、其他
关键字:rept、text
rept函数是重复输出字符。很简单=rept("a", 5),可以得到5个a。
text函数是格式化函数。效果和单元格格式的⾃定义格式⼀样,可以格式化数字内容。
该函数格式很简单:=text(待格式化的内容,格式化⽂本)。但这个函数格式化⽂本的知识较多。这⾥不⽅便扩展。⼤家可⾃⾏了解,或者有空的时候,我再写⼀篇有关text函数的博客。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。