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

时间:2017-03-31 19:43:27

标签: excel excel-formula

通常情况下,我只需使用excel中的RIGHT函数通过查找/等特定字符并输出我想要的字符串来拆分它。

但是,我发现从THISSTRING.txt中提取d/aaa/THISSTRING.txt时遇到问题。只有/的一个实例,我只会使用=RIGHT(B17,LEN(B17) - FIND("/",B17))

等函数

enter image description here

3 个答案:

答案 0 :(得分:2)

这是获得最右边的一种方法:

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

答案 1 :(得分:1)

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

这个公式:

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

在以下条件下提供正确的结果:

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

    Point 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中很难找到,根据需要进行更改。

答案 2 :(得分:0)

这是另一种方式......

=REPLACE(B17,1,LOOKUP(2^15,FIND("/",B17,ROW(INDIRECT("1:"&LEN(B17))))),"")

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

LOOKUP从数组中提取该值,我们可以在REPLACE函数中使用它来替换所有字符,然后在该位置替换所有字符,只留下最后一个字符后面的所有字符&#34 ; /"

如果没有" /"您将收到错误消息在B17