当字符串在Excel中的位置因行而异时提取字符串的方法

当字符串在Excel中的位置因行而异时提取字符串的方法,excel,excel-formula,Excel,Excel Formula,我试图从excel表中提取字符串(用户名) 用户名的位置因行而异,例如: D:\Users\james D:\Users\johnny2 D:\Userdata\Users\mark\My Documents D:\Users\Jessica\My Private Files\Files D:\NewteamUsers\Molly2\Documents 我需要提取的只是用户名 詹姆斯 约翰尼 标记 杰西卡 Molly2 因为它随行而异,所以我不能使用函数在第n个字符或特定字符后提取。只有

我试图从excel表中提取字符串(用户名)

用户名的位置因行而异,例如:

  • D:\Users\james
  • D:\Users\johnny2
  • D:\Userdata\Users\mark\My Documents
  • D:\Users\Jessica\My Private Files\Files
  • D:\NewteamUsers\Molly2\Documents
我需要提取的只是用户名

  • 詹姆斯
  • 约翰尼
  • 标记
  • 杰西卡
  • Molly2
因为它随行而异,所以我不能使用函数在第n个字符或特定字符后提取。只有常见的事情是在用户名开始之前总是有“sers\”和“\”字符或空格

您能指导我如何使用函数实现此功能吗?

试试

=TRIM(LEFT(SUBSTITUTE(REPLACE(A2, 1, FIND("sers\", A2)+4, TEXT(,))&"\", "\", REPT(" ", LEN(A2))), LEN(A2)))
如果用户的大小写不总是正确的,那么将搜索替换为FIND,您将获得一个不区分大小写的位置来进行字符串搜索

这个应该可以:

=IF(ISERROR(FIND("\",RIGHT(A1,LEN(A1)-FIND("Users\",A1)-5))),RIGHT(A1,LEN(A1)-FIND("Users\",A1)-5),LEFT(RIGHT(A1,LEN(A1)-FIND("Users\",A1)-5),FIND("\",RIGHT(A1,LEN(A1)-FIND("Users\",A1)-5))-1))

这里还有一个方法


=TRIM(MID(替换(A2,“\”,REPT(“,99)),SEARCH(“sers”,替换(A2,“\”,REPT(“,99)),1)+99,99))

使用正则表达式提取“Users\”之后的第一部分。像“用户\([^]*)”@jezrael,另一个家伙很可能就是这么做的。几乎每次我们都提出一个答案时,他都投我的反对票,有一次他争论我:)