--------------------------
在Excel中,提取字符串中的第一个汉字及其后面的内容是一个常见的任务。本文将介绍七种不同的公式来实现这一目标。
需求:
假设B2单元格中的字符串为“888南天门一日游”,我们需要提取第一个汉字“南”字及后面的内容:“南天门一日游”。
图片
公式:=MID(B2,2*LEN(B2)-LENB(B2)+1,99)图片
思路:这个公式利用了汉字和非汉字在字节长度上的区别,利用长度计算来非汉字的个数。
公式解析:LEN(B2):计算字符串的字符数(包括字母和汉字)。
LENB(B2):计算字符串的字节数(汉字占两个字节,字母占一个字节)。
2*LEN(B2)-LENB(B2):lenb-len是汉字的个数。lenb-(lenb-len)也就是2*lenb-len就是非汉字字符的个数。
MID(B2,2*LEN(B2)-LENB(B2)+1,99):从计算出的位置开始提取字符串中的字符,长度为99(一个足够大的数,确保提取到所有剩余字符)。
图片
2. 公式:=MID(B2,MATCH(2,LENB(MID(B2,ROW($1:$99),1)),0),99)图片
图片
思路:利用ROW函数生成一个行号数组,逐一检查每个字符的字节长度,定位第一个汉字。
公式解析:ROW(1:99):生成一个从1到99的数组。新版Excel可以用SEQUENCE(99)代替
MID(B2,ROW(1:99),1):提取每个位置上的单个字符。
LENB(MID(B2,ROW(1:99),1)):计算每个字符的字节长度。
MATCH(2,LENB(MID(B2,ROW(1:99),1)),0):找到第一个字节长度为2(汉字)的字符的位置。
MID(B2,MATCH(2,LENB(MID(B2,ROW(1:99),1)),0),99):从找到的位置开始提取字符串,长度为99。
图片
3. 公式:=MID(B2,MATCH(1=1,MID(B2,ROW($A$1:$A$99),1)>"吖",0),999)图片
图片
思路:利用字符的Unicode编码,通过比较每个字符与“吖”的大小(“吖”为第一个汉字,其他汉字都比它大。),以判断是否为汉字,以此方法来定位第一个汉字的位置。
公式解析:ROW($A$1:$A$99):生成一个从1到99的数组。
MID(B2,ROW($A$1:$A$99),1):提取每个位置上的单个字符。
MID(B2,ROW($A$1:$A$99),1)>"吖":判断每个字符是否大于“吖”,如果是汉字,这个判断通常为真。
MATCH(1=1,MID(B2,ROW($A$1:$A$99),1)>"吖",0):找到第一个满足判断条件的位置。1=1计算结果为true(也可直接写true)
MID(B2,MATCH(1=1,MID(B2,ROW($A$1:$A$99),1)>"吖",0),999):从找到的位置开始提取字符串,长度为999。
图片
4. 公式:=MID(B2,FIND("%",ENCODEURL(B2)),99)图片
图片
思路:利用ENCODEURL函数编码字符串,汉字会被编码成“%XX”的形式,通过定位“%”来找到第一个汉字的位置。
公式解析:ENCODEURL(B2):对字符串进行URL编码。
FIND("%",ENCODEURL(B2)):找到第一个“%”的位置,这对应于第一个汉字的开始位置。
MID(B2,FIND("%",ENCODEURL(B2)),99):从找到的位置开始提取字符串,长度为99。
图片
5. 公式:=MID(B2,MATCH(" ",MIDB(B2,ROW(1:99),1),0),99)图片
图片
思路:利用MIDB函数按字节提取字符(此函数提取汉字时,会返回空格。利用此特点来判断汉字),再通过MATCH函数查找非汉字与汉字的过渡位置。
公式解析:MIDB(B2,ROW(1:99),1):逐个字节提取字符串中的字符。
MATCH(" ",MIDB(B2,ROW(1:99),1),0):找到第一个字节长度为2(汉字)的字符的位置。
MID(B2,MATCH(" ",MIDB(B2,ROW(1:99),1),0),99):从找到的位置开始提取字符串,长度为99。
图片
6.公式:=TEXTJOIN(,1,TEXTSPLIT(B2,SEQUENCE(10,1,0)))图片
图片
思路:该公式利用TEXTSPLIT函数将字符串按特定字符分割,然后用TEXTJOIN函数重新组合非数字部分,从而提取第一个汉字及其后面的内容。
公式解析:SEQUENCE(10,1,0):生成一个从0到9的序列,用于分割字符串。这些数字在ASCII码中分别对应不同的字符,因此可以用来分割字符串。
TEXTSPLIT(B2, SEQUENCE(10,1,0)):将B2单元格中的字符串按生成的序列分割。分割点包括0到9这10个字符,因此任何数字字符都会作为分割点。
TEXTJOIN(,1,TEXTSPLIT(B2,SEQUENCE(10,1,0))):将分割后的字符串重新组合。TEXTJOIN函数会忽略空白字符,只组合非数字部分。
图片
WPS的公式=REGEXP(B2,"\D+")
Excel用下面的公式:
=REGEXEXTRACT(B2,"\D+")
图片
思路:利用正则表达式匹配非数字字符,直接提取非数字字符。
公式解析:REGEXP(B2,"\D+"):REGEXP是WPS中的正则表达式函数,Excel 365请使用REGEXEXTRACT函数。\D+表示所有非数字字符(包括汉字),直接提取字符串中所有非数字的字符。
关于正则表达式请阅读下面的文章
【下面文章中的函数,在Excel 365中请根据情况换成REGEXEXTRACT、REGEXTEST、REGEXREPLACE】:
①WPS新增的REGEXP函数,非常好用!强烈推荐②WPS新增的REGEXP函数,有何特别魔力让人如此推荐?③WPS新增的REGEXP函数,刚琢磨出的新颖用法正则表达式表示字母的[A-Za-z],能否简写成[A-z]?通过这七个公式,我们可以有效地提取单元格中第一个汉字及其后面的所有内容。每种方法都有其独特的思路和实现方式,可以根据具体情况选择合适的公式。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。