Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 如何使用多次出现的特定字符从右向左提取单元格中的字符串?_Excel_Excel Formula - Fatal编程技术网

Excel 如何使用多次出现的特定字符从右向左提取单元格中的字符串?

Excel 如何使用多次出现的特定字符从右向左提取单元格中的字符串?,excel,excel-formula,Excel,Excel Formula,通常,我只需使用excel中的RIGHT函数,通过查找特定字符(如/)并输出所需字符串来拆分它 但是,我发现从d/aaa/thistring.txt中提取thistring.txt时出现问题。如果只有一个/实例,我将只使用=RIGHT(B17,LEN(B17)-FIND(“/”,B17)) 这里有一种方法可以获得最右边的: =TRIM(RIGHT(SUBSTITUTE(A1,"/",REPT(" ",99)),99)) 这里有一种方法可以获得最右边的: =TRIM(RIGHT(SUBSTITU

通常,我只需使用excel中的
RIGHT
函数,通过查找特定字符(如
/
)并输出所需字符串来拆分它

但是,我发现从
d/aaa/thistring.txt
中提取
thistring.txt
时出现问题。如果只有一个
/
实例,我将只使用
=RIGHT(B17,LEN(B17)-FIND(“/”,B17))


这里有一种方法可以获得最右边的:

=TRIM(RIGHT(SUBSTITUTE(A1,"/",REPT(" ",99)),99))

这里有一种方法可以获得最右边的:

=TRIM(RIGHT(SUBSTITUTE(A1,"/",REPT(" ",99)),99))

目标:在目标字符串中多次出现的字符最后一次出现后,从目标字符串返回最右边的子字符串

这个公式:

=TRIM(RIGHT(SUBSTITUTE(A1,"/",REPT(" ",99)),99))
在以下条件下提供正确的结果:

  • 要检索的子字符串不超过99个字符
  • 要检索的子字符串不包含多个空格字符
  • 示例:检索长度为
    123
    个字符且包含以下字符的子字符串
    1 ABC XXX 123 XYZ

    通过使用字符串长度而不是固定数字,可以轻松解决第1点:

    =TRIM(RIGHT(SUBSTITUTE(A1,"/",REPT(" ",LEN(A1))), LEN(A1)))
    
    然而,第2点不能用所引用的公式来克服

    建议的解决方案:无论上述条件如何,以下公式都会返回正确的结果:

    =RIGHT(A1, LEN(A1) - FIND( CHAR(12),
    SUBSTITUTE(A1, "/", CHAR(12), LEN(A1) - LEN( SUBSTITUTE(A1, "/", "" )))))
    

    注意:我使用了excel中不太可能找到的不可打印字符12,请根据需要进行更改。

    目标:在目标字符串中多次出现的字符最后一次出现后,返回目标字符串中最右边的子字符串

    这个公式:

    =TRIM(RIGHT(SUBSTITUTE(A1,"/",REPT(" ",99)),99))
    
    在以下条件下提供正确的结果:

  • 要检索的子字符串不超过99个字符
  • 要检索的子字符串不包含多个空格字符
  • 示例:检索长度为
    123
    个字符且包含以下字符的子字符串
    1 ABC XXX 123 XYZ

    通过使用字符串长度而不是固定数字,可以轻松解决第1点:

    =TRIM(RIGHT(SUBSTITUTE(A1,"/",REPT(" ",LEN(A1))), LEN(A1)))
    
    然而,第2点不能用所引用的公式来克服

    建议的解决方案:无论上述条件如何,以下公式都会返回正确的结果:

    =RIGHT(A1, LEN(A1) - FIND( CHAR(12),
    SUBSTITUTE(A1, "/", CHAR(12), LEN(A1) - LEN( SUBSTITUTE(A1, "/", "" )))))
    

    注意:我使用了不可打印的字符12,这在excel中很可能找不到,请根据需要进行更改。

    还有另一种方法

    =替换(B17,1,查找(2^15,查找(“/”),B17,行(间接(“1:”&LEN(B17)“))),”)

    FIND
    生成一个值数组,指示
    B17
    中“/”的第一个位置,但起点每次递增1,这意味着该数组中的最后一个数值是最后一个“/”的位置

    LOOKUP
    从数组中提取该值,我们可以在
    REPLACE
    函数中使用该值,将该位置之前和处的所有字符替换为零,只留下最后一个“/”之后的所有字符


    如果B17中没有“/”,您将得到一个错误

    =替换(B17,1,查找(2^15,查找(“/”),B17,行(间接(“1:”&LEN(B17)“))),”)

    FIND
    生成一个值数组,指示
    B17
    中“/”的第一个位置,但起点每次递增1,这意味着该数组中的最后一个数值是最后一个“/”的位置

    LOOKUP
    从数组中提取该值,我们可以在
    REPLACE
    函数中使用该值,将该位置之前和处的所有字符替换为零,只留下最后一个“/”之后的所有字符

    如果B17中没有“/”,您将得到一个错误