在表格中我们会碰到从字符串或者说一段文本中截取你所需要的特定字符,Excel为我们提供了很多方法来实现这一功能。下面通过举例的形式带大家实践截取字符串的方法。

例:应用公式从文本中截取特定字符

Excel技巧:截取字符串的几种方法-趣帮office教程网

如上表,从固定文本中截取出省、市、区(县)三级的相关信息。

例如“(130102)河北省石家庄市长安区”中提取出省级“河北省”填充到C2列,提取出市级“石家庄市”填充到D2列,提取出“长安区”填充到E2列。

(一)省级提取公式

LEFT(B47,MIN(FIND({"省","市","区"},B47&"省市区")))

1、FIND(find_text, within_text, [start_num])

find_text要查找的文本,within_text源文本, [start_num]开始字符位置。例如“中华人民共和国”查找“人民”,find(”人民”,”中华人民共和国”)=3(即从第三个字符开始)。

2、MIN(number1, [number2], ...)

求一组数字中最小值。例如min(2,5,9)=2。

3、LEFT(text, [num_chars])

从左开始返回文本中从特定字符位置开始的字符串。text指的是源文本,[num_chars]指的是提取字符数量。例如left(“中华人民共和国”,2)=中华。

说明:

1、{"省","市","区"}:数组的应用,代表不同的选项,具体到实例中指的文本中包含“省”、“市”或“区”的三种情况。

2、MIN()的运用是为了防止出现“区”和“市”同时出现时截取增大的情况,例如“内蒙古自治区呼和浩特市玉泉区”,不用MIN()函数时会截取到“内蒙古自治区呼和浩特市”,用MIN()之后即取最小,就会取到“内蒙古自治区”。

3、B47&"省市区"即在源文本后加上字符防止出现错误,特别是在“内蒙古自治区呼和浩特市玉泉区”这样的文本中。

(二)市级提取公式

IF(MID(B451,3,1)="市",C451,LEFT(SUBSTITUTE(B451,C451,"")&"市区州盟",MIN(FIND({"市","区","州","盟"},SUBSTITUTE(B451,C451,"")&"市区州盟"))))

1、SUBSTITUTE(源文本, 旧文本, 新文本, 替换第几个):文本中用新字符串替换旧字符串,例如“内蒙古自治区呼和浩特市玉泉区”,其中有2个“区”。

公式 结果
substitute(“内蒙古自治区呼和浩特市玉泉区”,“区”,“县”,2 内蒙古自治区呼和浩特市玉泉
substitute(“内蒙古自治区呼和浩特市玉泉区”,“区”,“县”,1 内蒙古自治呼和浩特市玉泉区

2、MID(文本,开始字符位置 ,提取字符数)

例如:mid(“中华人民共和国”,3,2)=人民。

说明:

1、因为北京市这样的直辖市的存在,与地级市形成冲突,所以用if()条件进行判断,条件MID(B451,3,1)="市"指是源文本第3个字符是“市”(直辖市具有这特征)。如果是直辖市即条件为真,执行LEFT(SUBSTITUTE(B451,C451,"")&"市区州盟");如果不是直辖市即条件为否,执行MIN(FIND({"市","区","州","盟"},SUBSTITUTE(B451,C451,"")&"市区州盟")))。

2、“市区州盟”是因为作为市级我国有4种不同类型的名称,分别为市、地区、自治州或盟。

(三)县级提取公式

IF(MID(B459,3,1)="市",SUBSTITUTE(B459,C459,""),SUBSTITUTE(B459,C459&D459,""))

说明:

1、SUBSTITUTE(B459,C459,""):指的是在源数据中将已提取的省级替换为空即去除省级部分。

2、SUBSTITUTE(B459,C459&D459,""):指的是在源数据中将已提取的省级、市级替换为空即去掉省级市级部分,余县级部分。