如何使用FILTER函数提取非完全匹配的事件对应时间?
解决方案
直接可用的公式(Excel 365/2021)
在D列对应单元格输入以下公式,无需新增辅助列:
=FILTER(A2:A1000, ISNUMBER(SEARCH(C2:C1000, TEXTAFTER(TEXTBEFORE(B2:B1000, "(", 1, TRUE), ":", -1, TRUE))))
注意:把公式里的
A2:A1000、B2:B1000、C2:C1000替换成你实际的数据区间,避免整列引用拖慢文件。
公式说明
TEXTBEFORE(B2:B1000, "(", 1, TRUE):移除B列事件名中括号包裹的后缀,无括号则保留原内容TEXTAFTER(..., ":", -1, TRUE):在上一步结果中,提取最后一个冒号之后的核心事件名,无冒号则保留原内容SEARCH(C2:C1000, ...):检查C列事件名是否包含在清理后的B列内容中(不区分大小写,需区分则改用FIND)ISNUMBER(...):将SEARCH的匹配结果转换为布尔值,作为FILTER的筛选条件FILTER(A2:A1000, ...):提取符合匹配条件的A列时间
提速小技巧
- 避免整列引用:明确数据的实际行数,比如数据到第500行就用
A2:A500,减少不必要的运算量 - 利用自动溢出:Excel 365/2021支持公式自动溢出,输入后会自动填充D列结果,无需手动下拉
内容的提问来源于stack exchange,提问作者wkmpa
相关产品推荐
相关产品推荐

