excel如何提取一段字符串中间的文字?

例1:在A1中输入E:\CNC图档\2018\DB\2018-0003\LEXAN-ROLLER-6-GROOVE\LEXAN-ROLLER-6-GROOVE.mcx-9 在B1中截取2018-0003 在C1中截取LEXAN-ROLLER-6-GROOVE

例2:在A1中输入E:\CNC图档\2018\RF(西雅图)\SON0006M7\SON0006M7.mcx-9 在B1中截取RF(西雅图) 在C1中截取SON0006M7

每次的路径是不一样的,但是截取的位置是一样的。尽量要用能通用的公式。

B1输入:

=MID($A1,LARGE(("\"=MID($A1,ROW($1:$100),1))*ROW($1:$100),4-COLUMN(A:A))+1,LARGE(("\"=MID($A1,ROW($1:$100),1))*ROW($1:$100),3-COLUMN(A:A))-LARGE(("\"=MID($A1,ROW($1:$100),1))*ROW($1:$100),4-COLUMN(A:A))-1)

数组公式,即同时按住Ctrl+Shift+Enter结束公式编辑,会自动生成一对“{}”,右拉下拉填充。

公式中以单元格字符长度不超过100个为例,如果有更多,将公式中的100改大些,比如改成300。

追问

如果我要截取第一个中的 DB 要怎么做

追答

由于路径深度不一样,不知道到底要提取哪部分,公式比较难办,现在给出的公式是提取的倒数第三个与最后一个“\”之间的两个内容。如想另行提取,必须给出需要提取哪部分的规律,才好给出提取公式。

追问

在A1中输入E:\CNC图档\2018\DB\2018-0003\LEXAN-ROLLER-6-GROOVE\LEXAN-ROLLER-6-GROOVE.mcx-9
在B1中截取DB
在C1中截取2018-0003
在D1中截取LEXAN-ROLLER-6-GROOVE

追答

前面的“E:\CNC图档\2018\”
是共有的么,将公式改为从第三个“\”后,分别提取两个“\”之间的内容,B1输入:
=IFERROR(MID($A1,SMALL(IF("\"=MID($A1,ROW($1:$500),1),ROW($1:$500)),COLUMN(C:C))+1,SMALL(IF("\"=MID($A1,ROW($1:$500),1),ROW($1:$500)),COLUMN(D:D))-SMALL(IF("\"=MID($A1,ROW($1:$500),1),ROW($1:$500)),COLUMN(C:C))-1),"")
数组公式,即同时按住Ctrl+Shift+Enter结束公式编辑,会自动生成一对“{}”,右拉下拉填充。

追问

谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-23

亲,如果中间的文字部分是连续的,还可以有办法。

如下图,在B1粘贴数组公式。注意:是数组公式,在单元格里粘贴了以后,千万不要按回车退出,而要按“Ctrl+Shift+回车”退出:

=MID(A1,MIN(IF(LENB(MID(A1,ROW(1:100),1))=2,ROW(1:100))),MAX(IF(LENB(MID(A1,ROW(1:100),1))=2,ROW(1:100)))-MIN(IF(LENB(MID(A1,ROW(1:100),1))=2,ROW(1:100)))+1)