You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选表格中含数据的行?支持多列检测,不限INDEX/MATCH方法

解决方案:筛选至少有一列数据的行

以下是几种实用方法,满足你排除全空行(如ID333的行)的需求:

1. 动态数组公式(Excel 365/2021及以上推荐)

直接使用FILTER函数,一行公式搞定,自动溢出结果:

=FILTER(A1:E6, MMULT(--(B1:E6<>""), SEQUENCE(COLUMNS(B1:E6),,1,0))>0)
  • 原理:--(B1:E6<>"")将非空单元格转为1,空单元格转为0;MMULT计算每行的数值总和,总和>0表示该行至少有一列有数据;FILTER据此筛选出符合条件的整行。

2. 传统数组公式(兼容旧版Excel)

如果使用不支持动态数组的Excel版本,用INDEX+SMALL+IF组合实现,输入后需按Ctrl+Shift+Enter确认:

=IFERROR(INDEX(A:A, SMALL(IF(MMULT(--(OFFSET(B1:E1,ROW(A1:A6)-ROW(A1),0)<>""), {1;1;1;1})>0, ROW(A1:A6), ""), ROWS($A$1:A1))),"")

下拉公式直到出现空值,即可得到所有符合条件的ID(若需整行数据,可调整INDEX的引用范围)。

3. 辅助列+手动筛选(无需复杂公式)

  • 在F1单元格输入公式:=COUNTA(B1:E1)>0,下拉填充至F6
  • 选中F列,点击「数据」选项卡的「筛选」按钮,筛选值为TRUE的行
  • 可隐藏F列,仅保留需要的内容

原公式修改思路

你原来的公式仅检测B列,要扩展为多列检测,只需把条件改为任意一列非空,修改后的数组公式(Ctrl+Shift+Enter):

=INDEX(A1:E6, SMALL(IF((B1:B6<>"")+(C1:C6<>"")+(D1:D6<>"")+(E1:E6<>"")>0, ROW(A1:A6)-ROW(A1)+1, ""), ROWS(A1:A1)), 1)
  • 这里用+表示逻辑或,只要B-E列中有一列非空,条件就成立;ROW(A1:A6)-ROW(A1)+1获取行号在数据区域内的相对位置。

内容的提问来源于stack exchange,提问作者The Wayfarer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:03:13