如何在最后一个下划线后提取Excel中字符串的最后一部分

sha*_*man 4 excel excel-formula

我有以下示例数据:

1. animated_brand_300x250
2. animated_brand_300x600
3. customaffin_greenliving_solarhome_anim_outage_offer
Run Code Online (Sandbox Code Playgroud)

如何从 Microsoft Excel 中的最后一个下划线中提取字符串?

我想在第一个下划线之前和最后一个下划线之后提取值。

第一个下划线:

=LEFT(B6,SEARCH(“_”,B6)-1)
Run Code Online (Sandbox Code Playgroud)

将返回animatedcustomaffin作为输出。

如何返回最后一个下划线后的字符串?

Mic*_*isk 7

_您可以使用该函数找到最后一个之后的字符串RIGHT。棘手的部分是找到最后一个 的位置_

首先,我们需要确定有多少个__这可以通过删除所有字符串并比较两个字符串的长度来完成:

LEN(A1)-LEN(SUBSTITUTE(A1;"_";""))
Run Code Online (Sandbox Code Playgroud)

由于我们现在知道我们必须查找第二次出现的 _,因此我们可以使用该SUBSTITUTE函数将第二次出现的 替换_为另一个字符(这必须是不属于原始字符串的字符 - I已经选择#)。

现在,我们使用该FIND函数来搜索字符的位置#。现在可以将此位置传递给该RIGHT函数。

你的最终公式将是:

=RIGHT(A1;LEN(A1)-FIND("#";SUBSTITUTE(A1;"_";"#";LEN(A1)-LEN(SUBSTITUTE(A1;"_";"")));1))
Run Code Online (Sandbox Code Playgroud)

获取Excel中多次出现的字符后的最后一个字符串


Jvd*_*vdV 5

其他一些选择可能是:

=TRIM(RIGHT(SUBSTITUTE(A1,"_",REPT(" ",100)),100))
Run Code Online (Sandbox Code Playgroud)

或者使用FILTERXML,理论上是一个更好的选择:

=FILTERXML("<t><s>"&SUBSTITUTE(A1,"_","</s><s>")&"</s></t>","//s[last()]")
Run Code Online (Sandbox Code Playgroud)

ExcelO365 独占方法甚至可以使用XLOOKUP

=REPLACE(A1,1,XLOOKUP("_",MID(A1,SEQUENCE(LEN(A1)),1),SEQUENCE(LEN(A1)),,0,-1),"")
Run Code Online (Sandbox Code Playgroud)

或者:

=RIGHT(A1,MATCH("_",MID(A1,SEQUENCE(LEN(A1),,LEN(A1),-1),1),0)-1)
Run Code Online (Sandbox Code Playgroud)