从 Excel 中的字符串中提取子字符串(否 VBA)
Extract Sub-String from String in Excel (No VBA)
我在 excel 中有一系列遵循以下模式的路径:
C:\Folder\Subfolder1\SURNAME, Firstname\Subfolder2\SURNAME, Firstname - YYYY MM DD - Invoice.pdf
我无法使用 VBA,因此使用数组公式,我将如何提取 SURNAME、Firstname?
使用 A1 中的数据,在 B1 中输入:
=LEFT(RIGHT(A1,LEN(A1)-FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))),1)),FIND("-",RIGHT(A1,LEN(A1)-FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))),1)))-2)
或者试试,
在B1
中向右复制直到空白并全部向下复制:
=TRIM(MID(SUBSTITUTE("\"&MID($A1,FIND("\",$A1,4)+1,FIND("-",$A1,4)-FIND("\",$A1,4)-2),"\",REPT(" ",199)),COLUMN(A1)*399,199))
您可以使用:
=TRIM(MID(SUBSTITUTE(A1,"\",REPT(" ",LEN(A1))),3*LEN(A1)+1,LEN(A1)))
其中 3*
可以读作 n-1,因此更改为任何数字以从分隔字符串中获取第 n 个子字符串。
另一个选项,可以访问 FILTERXML
:
=FILTERXML("<t><s>"&SUBSTITUTE(A1,"\","</s><s>")&"</s></t>","//s[position()=4]")
这实际上是从“\”分隔的字符串中提取第 4 个子字符串。如果您想检索其他子字符串,请将 position()=4
更改为 nth 位置。这个选项看起来有点长,但是当你想要检索多个子字符串时,你只需要更改 XPATH
.
就会变得很方便
经过你的推荐,我想你可能想试试:
=FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A6," - ","\"),"\","</s><s>")&"</s></t>","//s[position()=last()-2]")
我在 excel 中有一系列遵循以下模式的路径:
C:\Folder\Subfolder1\SURNAME, Firstname\Subfolder2\SURNAME, Firstname - YYYY MM DD - Invoice.pdf
我无法使用 VBA,因此使用数组公式,我将如何提取 SURNAME、Firstname?
使用 A1 中的数据,在 B1 中输入:
=LEFT(RIGHT(A1,LEN(A1)-FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))),1)),FIND("-",RIGHT(A1,LEN(A1)-FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))),1)))-2)
或者试试,
在B1
中向右复制直到空白并全部向下复制:
=TRIM(MID(SUBSTITUTE("\"&MID($A1,FIND("\",$A1,4)+1,FIND("-",$A1,4)-FIND("\",$A1,4)-2),"\",REPT(" ",199)),COLUMN(A1)*399,199))
您可以使用:
=TRIM(MID(SUBSTITUTE(A1,"\",REPT(" ",LEN(A1))),3*LEN(A1)+1,LEN(A1)))
其中 3*
可以读作 n-1,因此更改为任何数字以从分隔字符串中获取第 n 个子字符串。
另一个选项,可以访问 FILTERXML
:
=FILTERXML("<t><s>"&SUBSTITUTE(A1,"\","</s><s>")&"</s></t>","//s[position()=4]")
这实际上是从“\”分隔的字符串中提取第 4 个子字符串。如果您想检索其他子字符串,请将 position()=4
更改为 nth 位置。这个选项看起来有点长,但是当你想要检索多个子字符串时,你只需要更改 XPATH
.
经过你的推荐,我想你可能想试试:
=FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A6," - ","\"),"\","</s><s>")&"</s></t>","//s[position()=last()-2]")