从Excel中的字符串中提取子字符串(无VBA)
我在excel中有一系列路径,它们遵循以下模式:从Excel中的字符串中提取子字符串(无VBA),excel,string,excel-formula,extract,Excel,String,Excel Formula,Extract,我在excel中有一系列路径,它们遵循以下模式: C:\Folder\Subfolder1\SURNAME, Firstname\Subfolder2\SURNAME, Firstname - YYYY MM DD - Invoice.pdf 我不能使用VBA,因此使用数组公式,如何提取姓氏、姓氏?在A1中的数据,在B1中输入: =LEFT(RIGHT(A1,LEN(A1)-FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\"
C:\Folder\Subfolder1\SURNAME, Firstname\Subfolder2\SURNAME, Firstname - YYYY MM DD - Invoice.pdf
我不能使用VBA,因此使用数组公式,如何提取姓氏、姓氏?在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]")
两者都很出色,JvdV,但在最后一个“\”之后返回所有内容。我只需要从最后一个“\”返回到“-”。路径长度也是可变的,因此需要计算最后一个斜杠。不过,我可以在其他地方使用您的解决方案。谢谢@BadDogTitan,我知道你现在在尝试什么了,看看更新。就像广告宣传的那样。再次感谢。
=FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A6," - ","\"),"\","</s><s>")&"</s></t>","//s[position()=last()-2]")