如何组合LEFT、SEARCH与REGEXREPLACE函数提取目标癌症名称
表格固定格式字段提取公式方案
需求说明
处理表格数据时,需从A列字段中提取纯癌症名称,剔除开头的Deaths -前缀,以及癌症名称后的性别、年龄等附属字段。
A列所有数据遵循统一格式,示例内容如下:
Deaths - Prostate cancer - Sex: Both - Age: Age-standardized (Rate) Deaths - Breast cancer - Sex: Both - Age: Age-standardized (Rate) Deaths - Testicular cancer - Sex: Both - Age: Age-standardized (Rate) Deaths - Non-melanoma cancer - Sex: Both - Age: Age-standardized (Rate) Deaths - Tracheal, bronchus, and lung cancer - Sex: Both - Age: Age-standardized (Rate)
已实现效果
当前通过LEFT与SEARCH组合公式:
=LEFT(A2, SEARCH("cancer", A2)-1)
已经完成cancer及后续文本的移除,返回结果如下:
Deaths - Breast Deaths - Testicular Deaths - Non-melanoma Deaths - Tracheal, bronchus, and lung
待解决问题
现有结果残留前缀Deaths与连接短横,无法将REGEXREPLACE和现有LEFT、SEARCH逻辑整合为单条公式,无法得到纯癌症名称。
期望最终输出结果如下:
Breast Testicular Non-melanoma Tracheal, bronchus, and lung Prostate
可用实现方案
根据使用的表格工具不同,可选择以下两种单公式方案:
- 通用兼容方案(适配所有版本Excel、WPS、Google Sheets,无需正则支持)
=TRIM(MID(A2, 9, SEARCH(" cancer - ", A2)-9))
逻辑说明:开头固定前缀Deaths - 长度固定为9个字符,直接从第10位开始截取文本,截取到固定分隔符cancer -的位置停止,最后用TRIM清除首尾多余空格即可。
- 正则简洁方案(适配Google Sheets、Excel 365、最新版WPS等支持正则函数的工具)
=REGEXREPLACE(A2, "^Deaths - (.*?) cancer - .*$", "$1")
逻辑说明:通过正则匹配整行文本,将Deaths - 和cancer -之间的癌症名称捕获为第一个分组,直接把整行内容替换为分组内的文本即可,不需要额外处理空格,容错性更高。
内容的提问来源于stack exchange,提问作者user14915635
相关产品推荐
相关产品推荐

