如何在Excel中筛选指定列匹配值并生成无空行的新表格?
如何在Excel中筛选指定列匹配值并生成无空行的新表格?
嘿,这个需求太常见啦!不想靠排序还能得到无空行的筛选结果,其实有两种超实用的方法,看你用的是哪一版Excel:
方法一:用FILTER函数(Excel 365/2021及以后版本)
这是最省心的方案,因为FILTER本身就是动态数组函数,能直接返回符合条件的所有结果,自动跳过空行。
假设你的原数据在A列(要提取的内容)和B列(匹配条件列,也就是你说的match_this),要筛选"Option 1"的话,在新表格的第一个单元格(比如D2)输入:
=FILTER(A:A, B:B="Option 1", "无匹配数据")
- 第一个参数
A:A:指定你要提取内容的目标列 - 第二个参数
B:B="Option 1":设置筛选条件,只保留B列等于Option 1的行 - 第三个参数
"无匹配数据":如果没有符合条件的内容,会显示这段提示(也可以留空,写成"")
输入后按回车,直接就能得到一列没有空行的筛选结果,而且原数据更新时,新表格会自动同步变化!要筛选"Option 2"的话,把公式里的"Option 1"改成"Option 2"就行。
方法二:用INDEX+SMALL+IF组合(旧版Excel,比如2019及以前)
如果你的Excel版本不支持FILTER,就用这个数组公式组合,一样能实现无空行筛选。
同样假设原数据范围是A2:B10(表头在A1、B1),要筛选"Option 1",在新表格的D2输入:
=IFERROR(INDEX(A:A, SMALL(IF($B$2:$B$10="Option 1", ROW($B$2:$B$10)), ROW(A1))), "")
然后按住Ctrl+Shift+Enter(这是数组公式的要求,不能直接按回车),之后下拉填充这个公式,直到单元格显示空内容为止。
公式逻辑拆解:
IF($B$2:$B$10="Option 1", ROW($B$2:$B$10)):找出B列所有等于Option 1的行号,不符合条件的会返回错误值SMALL(..., ROW(A1)):按从小到大的顺序,依次取出第1、2、3...个符合条件的行号(下拉时ROW(A1)会变成ROW(A2)、ROW(A3),对应取第2、3个行号)INDEX(A:A, ...):根据取出的行号,提取A列对应的内容IFERROR(..., ""):避免没有匹配数据时显示#NUM!错误,改成显示空单元格
要筛选"Option 2"的话,把公式里的"Option 1"替换成"Option 2"即可。
备注:内容来源于stack exchange,提问作者user171780




