Excel技术问询:如何提取单元格字符串中右侧第二个下划线后的文本
Excel提取右侧数第二个下划线后的目标文本
需求说明
需要从单元格字符串中提取从右侧数第二个下划线之后、最后一个下划线之前的文本。示例:
- 单元格内容:
88/12_PO/SP_SJ_#448491_WHITE_10A_60 - 需提取结果:
10A
原公式问题
你提供的原公式:
=MID(B2, SEARCH("_",B2) + 1, SEARCH("_",B2,SEARCH("_",B2)+1) - SEARCH("_",B2) - 1)
作用是提取左侧前两个下划线之间的内容(示例中会得到PO/SP),完全不符合需求,需要替换为以下正确公式。
正确公式方案
方案1:适用于Excel 365/2021及以上版本(简洁版)
利用TEXTAFTER和TEXTBEFORE函数直接定位:
=TEXTBEFORE(TEXTAFTER(B2,"_",-2),"_")
- 逻辑:
TEXTAFTER(B2,"_",-2)提取从右侧数第二个下划线之后的所有文本(示例中得到10A_60);TEXTBEFORE再提取该结果中下划线之前的部分,最终得到10A。
方案2:适用于所有Excel版本(兼容版)
通过计算下划线总数,定位倒数第二、第一个下划线的位置,再用MID提取内容:
=MID(B2, FIND("@",SUBSTITUTE(B2,"_","@",LEN(B2)-LEN(SUBSTITUTE(B2,"_",""))-1))+1, FIND("@",SUBSTITUTE(B2,"_","@",LEN(B2)-LEN(SUBSTITUTE(B2,"_",""))))-FIND("@",SUBSTITUTE(B2,"_","@",LEN(B2)-LEN(SUBSTITUTE(B2,"_",""))-1))-1)
- 逻辑:
LEN(B2)-LEN(SUBSTITUTE(B2,"_",""))计算单元格内下划线的总数量;- 用
SUBSTITUTE分别把倒数第二个、第一个下划线替换为特殊字符@; - 通过
FIND找到两个@的位置,用MID提取中间的目标文本。
内容的提问来源于stack exchange,提问作者Ishara Jayasinghe
相关产品推荐
相关产品推荐

