打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
从分隔符连接的字符串中提取子字符串

有时候,在工作表单元格中有一些以某分隔符连接的字符串,如图1中的单元格A1,其内容是以逗号连接城市名。

1

如果我们想要提取其中的某个城市,例如第8个子字符串表示的城市名,则可以使用下面的公式:

=TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",999)),8*999-998,999))

在公式中,先使用SUBSTITUTE函数以999个空格来替换字符串中的每个分隔符,然后使用MID函数提取所需要的子字符串(前后都含有空格),最后使用TRIM函数去掉字符串首尾的空格获得最终的结果。由于每个子字符串远小于999,因此不用担心位置参数不合适而得到错误结果。

如果想要提取字符串中的每个子字符串并将它们分别放置在不同的单元格中,则可以使用公式:

=TRIM(MID(SUBSTITUTE($A$1,",",REPT("",999)),COLUMN(A1)*999-998,999))

结果如下图2所示。

2

在图2所示的工作表中,在单元格B3中输入上面的公式,向右拖至单元格K3

在公式中,COLUMN(A1)的值为1,向右拖动1列,将变为COLUMN(B1),值为2,依此类推,从而顺序提取子字符串的值。

好好讲道理:反击谬误的逻辑学训练(Attacking Faulty Reasoning)(美国30余所大学通用的逻辑学教材)(如果你只打算买一本关于批判性思维的书,本书是不二选择!)

作者:[美]T.爱德华戴默 著,黄琳,刀尔登 译

当当

一般公式

从上面的演示中,我们可以得到实现此种情况的一般公式为:

=TRIM(MID(SUBSTITUTE(字符串所在单元格,分隔符,REPT("",999)),子字符串位置*999-998,999))

公式中的数字999可以随字符串的长度而定,只是要取得足够大即可。

更进一步

如果要从字符串的结尾开始提取指定位置的子字符串呢?如图3所示,要提取单元格A1中倒数第3个子字符串。

3

我们已经给出的公式为:

=TRIM(MID(SUBSTITUTE(A1,",",REPT("",999)),(2-3+(LEN(A1)-LEN(SUBSTITUTE(A1,",","")))/LEN(","))*999-998,999))

一般的公式为:

=TRIM(MID(SUBSTITUTE(字符串所在单元格,分隔符,REPT("",999)),(2-子字符串位置+(LEN(字符串所在单元格)-LEN(SUBSTITUTE(字符串所在单元格,分隔符,"")))/LEN(分隔符))*999-998,999))

上例中,可以使用一个更好的公式得到同样的结果:

=TRIM(LEFT(RIGHT(SUBSTITUTE(","&A1,",",REPT("",999)),3*999),999))

这也可以避免子字符串位置超过了字符串实际位置时出现的错误。

一般的公式为:

=TRIM(LEFT(RIGHT(SUBSTITUTE(分隔符&字符串所在单元格,分隔符,REPT(" ",999)),子字符串位置*999),999))

公式中的999是取的一个较大的数字,这个数字至少应大于字符串所在单元格中的字符数。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
将带分隔符的字符串拆分成数组的Excel通用公式
提取字符串中两相邻分隔符之间文本的公式
用rept函数拆分数据就是好用
37给大家推荐一个函数套路:TRIM+SUBSTITUTE
有一个Excel函数叫:省时一整天,你却连我的名字都不知道…
【Excel函数】全了!SUBSTITUTE模块化用法七则
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服