Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Excel中的字符串中提取子字符串(无VBA)_Excel_String_Excel Formula_Extract - Fatal编程技术网

从Excel中的字符串中提取子字符串(无VBA)

从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,"\"

我在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,"\",""))),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]")