我有以下示例数据:
1. animated_brand_300x250
2. animated_brand_300x600
3. customaffin_greenliving_solarhome_anim_outage_offer
如何从Microsoft Excel的最后一个下划线中提取字符串?
我要提取第一个下划线之前和最后一个下划线之后的值。
第一个下划线:
=LEFT(B6,SEARCH(“_”,B6)-1)
将返回animated
和customaffin
作为输出。
如何在最后一个下划线后返回字符串?
答案 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))