如何在Excel中筛选A表指定字符段含B表关键字的行?
Excel实现跨表关键字匹配筛选方案
完全可以在Excel内实现需求,无需借助其他工具,以下是两种兼容不同Excel版本的可行方案:
前提假设
- Excel A(记为
Sheet1)的关键字列位于A列,数据从A2开始(A1为表头) - Excel B(记为
Sheet2)的关键字列位于A列,数据从A2开始(A1为表头) - 两个表的关键字数据均不超过1000行(若超过,只需修改公式中的行号范围即可)
方案一:辅助列筛选(兼容所有Excel版本)
- 在
Sheet1的空白列(比如B列)的B2单元格输入以下公式:=IF(SUMPRODUCT(--ISNUMBER(SEARCH(Sheet2!$A$2:$A$1001, MID(A2,4,6))))>0, "匹配", "不匹配") - 下拉填充公式至所有数据行
- 对
B列进行筛选,选择"匹配"即可得到符合要求的行
公式解释
MID(A2,4,6):提取A2关键字的第4至第9位(从第4位开始截取6个字符)SEARCH(Sheet2!$A$2:$A$1001, ...):检查B表的每个关键字是否存在于截取的字符串中,返回匹配位置或错误值ISNUMBER(...):将匹配结果转为布尔值(匹配为TRUE,不匹配为FALSE)--:将布尔值转为数字(TRUE→1,FALSE→0)SUMPRODUCT(...):求和所有匹配结果,大于0则说明存在至少一个匹配的B表关键字
方案二:动态数组直接提取(适用于Excel 365/2021及以上)
如果使用支持动态数组的Excel版本,可直接提取所有符合条件的行,无需手动筛选:
- 若仅提取关键字列,在
Sheet1的B2输入:=FILTER(Sheet1!A2:A1001, BYROW(Sheet1!A2:A1001, LAMBDA(x, SUMPRODUCT(--ISNUMBER(SEARCH(Sheet2!A2:A1001, MID(x,4,6))))>0))) - 若需提取整行数据,将公式中的
Sheet1!A2:A1001替换为数据所在的整行范围(比如Sheet1!A2:Z1001)
效果验证
针对你给出的示例:
- Excel A第二个关键字
789ABC1234560ABC,截取第4-9位为ABC123,匹配Excel B的第一个关键字 - Excel A第四个关键字
4567890ABC123ABC,截取第4-9位为7890AB,匹配Excel B的第二个关键字
两个案例均会被公式判定为"匹配",符合需求
内容的提问来源于stack exchange,提问作者Krutoj
相关产品推荐
相关产品推荐

