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

时间:2020-08-03 22:47:29

标签: excel excel-formula

我有以下示例数据:

1. animated_brand_300x250
2. animated_brand_300x600
3. customaffin_greenliving_solarhome_anim_outage_offer

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

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

第一个下划线:

=LEFT(B6,SEARCH(“_”,B6)-1)

将返回animatedcustomaffin作为输出。

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

2 个答案:

答案 0 :(得分:4)

其他一些选项可能是:

=TRIM(RIGHT(SUBSTITUTE(A1,"_",REPT(" ",100)),100))

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

=FILTERXML("<t><s>"&SUBSTITUTE(A1,"_","</s><s>")&"</s></t>","//s[last()]")

ExcelO365专有方法甚至可以使用XLOOKUP

=REPLACE(A1,1,XLOOKUP("_",MID(A1,SEQUENCE(LEN(A1)),1),SEQUENCE(LEN(A1)),,0,-1),"")

或者:

=RIGHT(A1,MATCH("_",MID(A1,SEQUENCE(LEN(A1),,LEN(A1),-1),1),0)-1)

答案 1 :(得分:3)

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

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

LEN(A1)-LEN(SUBSTITUTE(A1;"_";""))

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

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

您的最终公式将是:

=RIGHT(A1;LEN(A1)-FIND("#";SUBSTITUTE(A1;"_";"#";LEN(A1)-LEN(SUBSTITUTE(A1;"_";"")));1))

Get the last string after a character with multiple occurrrences in Excel