Excel实现文档标题子串匹配分类的公式优化需求
基于标题子串匹配的文档分类解决方案
问题
要根据文档标题的子串匹配docCategories分类表中的标签(支持部分/完全匹配),给文档分配对应分类。原公式仅能实现精确匹配,无法完成像“Appointment Letter”含“Letter”就返回“Correspondence”这类子串匹配场景,求可行解决方案。
示例数据
文档标题表
| 标题 | 预期分类 |
|---|---|
| correspondence | Correspondence |
| Note Transmission Correspondence | Correspondence |
| Advisors Evaluation Report | Report |
| Country Notes | Correspondence |
| Annual Portfolio Report | Report |
| Appointment Letter | Correspondence |
分类标签表docCategories
| 分类 | 标签1 | 标签2 | 标签3 | 标签4 |
|---|---|---|---|---|
| Correspondence | Letter | Memo | Note | Correspondence |
| Report | Dashboard | Report |
解决方案
适用于Excel 365/2021(动态数组,无需组合键确认)
=INDEX(docCategories[Category],MATCH(TRUE,BYROW(docCategories,LAMBDA(row,SUMPRODUCT(--ISNUMBER(SEARCH(OFFSET(row,0,1,1,COLUMNS(docCategories)-1),A2)))>0)),0))
兼容旧版Excel(需按Ctrl+Shift+Enter确认数组公式)
=INDEX(docCategories!$A:$A,MIN(IF(SUMPRODUCT(--ISNUMBER(SEARCH(docCategories!$B$2:$E$3,A2)))>0,ROW(docCategories!$A$2:$A$3))))
公式说明
SEARCH(标签区域, A2):检查标题A2中是否包含某个标签,包含则返回位置,不包含返回错误值。ISNUMBER(...)将结果转为布尔值(匹配为TRUE,不匹配为FALSE),--进一步把布尔值转成1和0,方便统计。SUMPRODUCT对转换后的数字求和,总和大于0就说明当前分类行存在匹配的标签。MATCH定位第一个满足条件的分类行号,INDEX根据行号返回对应的分类名称。
测试效果
- 输入“Appointment Letter”:检测到包含“Letter”,返回
Correspondence。 - 输入“Annual Portfolio Report”:包含“Report”,返回
Report。
内容的提问来源于stack exchange,提问作者Menelao
相关产品推荐
相关产品推荐

