Excel公式:提取字符串中最后一个通配符关键词前的文本
Excel公式:提取最后一个通配符关键词前的文本(不区分大小写)
需求说明
提取文本字符串中最后一个特定关键词之前的全部内容,要求支持不区分大小写匹配和通配符(如*、?)匹配。
示例
- 文本所在单元格(A2):
Johnny is looking for a full-time job, because the job he once had went out of business, and although he is currently working full time he is not happy, and is aggressively seeking a more permanent full-time job that offers benefits and 1st Shift. - 搜索关键词所在单元格(B2):
Full*time - 关键词在文本中出现次数:3次
- 提取结果(C2):
Johnny is looking for a full-time job, because the job he once had went out of business, and although he is currently working full time he is not happy, and is aggressively seeking a more permanent full-time
现有公式局限
原SUBSTITUTE类公式无法支持通配符和不区分大小写匹配:
=LEFT(A2,FIND("|",SUBSTITUTE(A2,B2,"^",LEN(A2)-LEN(SUBSTITUTE(A2,B2,""))))-1)
你提到的用于提取关键词最后一次出现后内容的公式为:
=RIGHT(A2,LEN(A2)-1-MAX(IFERROR(SEARCH(B2,A2,ROW($1:$999)),0))+1)
解决方案公式
通用数组公式(支持所有Excel版本)
需按Ctrl+Shift+Enter组合键确认输入(旧版Excel必填,新版可直接回车):
=LEFT(A2,MAX(IFERROR(SEARCH(B2,A2,ROW($1:$999)),0))-1)
动态数组公式(适用于Excel 365/2021及以后版本)
无需按组合键,直接回车即可:
=LEFT(A2,MAX(IFERROR(SEARCH(B2,A2,SEQUENCE(LEN(A2))),0))-1)
公式说明
SEARCH(B2,A2,位置):原生支持通配符和不区分大小写,从指定位置开始搜索关键词的起始坐标ROW($1:$999)/SEQUENCE(LEN(A2)):生成连续的起始搜索位置,覆盖文本的每个字符位IFERROR(...,0):处理关键词不存在的情况,避免返回错误值MAX(...):定位关键词最后一次出现的起始位置LEFT(A2, 位置-1):提取文本开头到该位置前的全部内容
异常处理(可选)
若关键词不存在时希望返回原文本,可嵌套IFERROR:
=IFERROR(LEFT(A2,MAX(IFERROR(SEARCH(B2,A2,ROW($1:$999)),0))-1),A2)
内容的提问来源于stack exchange,提问作者Miaka3
相关产品推荐
相关产品推荐

