Excel跨多列提取含指定关键词的唯一整行(支持模糊匹配)
提取Excel中含指定关键词的唯一整行数据(支持模糊匹配)
一、用Excel自带功能搞定(零公式)
1. 定位所有含关键词的单元格
- 按
Ctrl+F弹出「查找和替换」对话框,输入目标关键词(比如Foo) - 点击「选项」,不要勾选「单元格匹配」(勾选后仅支持完全匹配,无法识别
Foobar这类包含关键词的内容) - 点击「查找全部」,对话框底部会列出所有匹配的单元格;按
Ctrl+A全选这些结果,关闭对话框后,工作表中所有含关键词的单元格会被选中
2. 提取整行并去重
- 右键选中的任意单元格→点击「复制」
- 新建空白工作表,右键A1单元格→「粘贴」,此时会粘贴所有匹配的行(同一行多列含关键词会重复粘贴)
- 选中粘贴后的全部数据区域(含表头),点击「数据」选项卡→「删除重复值」→勾选「全选」→点击「确定」,即可得到唯一的匹配行
多列匹配的示例说明
下图为「查找和替换」的结果示例:同一行(行号5)的A列和C列均包含关键词"Foo",查找结果会显示两条对应记录,但后续去重操作后,这行只会保留一次:
(示例图展示:查找结果列表中,行号5的A、C单元格均匹配关键词,两条记录指向同一行)
二、用公式实现(数据动态更新)
假设:
- 原始数据位于
Sheet1!A1:AB4950,表头在第1行 - 关键词输入在
Sheet2!A1(可自行调整位置) - 结果输出在
Sheet2的A2开始区域
1. 生成不重复的匹配行号
在Sheet2!B2单元格输入以下公式:
- Excel 365/2021版本直接回车
- 旧版Excel需按
Ctrl+Shift+Enter触发数组公式
=IFERROR(INDEX(Sheet1!$A$1:$A$4950,SMALL(IF(MMULT(--(ISNUMBER(SEARCH(Sheet2!$A$1,Sheet1!$A$2:$AB$4950))),ROW(Sheet1!$A$1:$AB$1)^0)>0,ROW(Sheet1!$A$2:$AB$4950)-ROW(Sheet1!$A$1)+1,""),ROW(A1))),"")
原理说明:先逐行检查是否存在含关键词的单元格,将符合条件的行号按顺序提取,无匹配时返回空白。
2. 提取整行数据
在Sheet2!A2单元格输入公式,向右拖动到AB列,再向下拖动至出现空白即可:
=IF($B2="","",INDEX(Sheet1!A:A,$B2))
该公式会根据B列的行号,提取Sheet1对应行的整列数据,B列为空时自动显示空白。
公式优势
- 支持模糊匹配,搜索
Foo可匹配Foobar、XyFooZ等包含关键词的内容 - 自动去重,同一行无论多少列含关键词,仅提取一次
- 原始数据更新后,结果会自动同步更新
内容的提问来源于stack exchange,提问作者Jimmy Wede
相关产品推荐
相关产品推荐

