You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在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(这是数组公式的要求,不能直接按回车),之后下拉填充这个公式,直到单元格显示空内容为止。

公式逻辑拆解:

  1. IF($B$2:$B$10="Option 1", ROW($B$2:$B$10)):找出B列所有等于Option 1的行号,不符合条件的会返回错误值
  2. SMALL(..., ROW(A1)):按从小到大的顺序,依次取出第1、2、3...个符合条件的行号(下拉时ROW(A1)会变成ROW(A2)、ROW(A3),对应取第2、3个行号)
  3. INDEX(A:A, ...):根据取出的行号,提取A列对应的内容
  4. IFERROR(..., ""):避免没有匹配数据时显示#NUM!错误,改成显示空单元格

要筛选"Option 2"的话,把公式里的"Option 1"替换成"Option 2"即可。

备注:内容来源于stack exchange,提问作者user171780

火山引擎 最新活动