Excel按日期区间筛选数据并排除全0行的公式解决方案
Excel按日期区间筛选并排除全0行的公式方案
假设你的数据结构如下(第一列为行标识,首行为日期表头,下方为对应数值):
| 行标识 | 2025/1/8 | 2025/1/9 | 2025/1/10 | 2025/1/11 | 2025/1/12 |
|---|---|---|---|---|---|
| A | 1 | 2 | 0 | 3 | 0 |
| B | 0 | 5 | 4 | 0 | 0 |
| C | 3 | 0 | 0 | 2 | 1 |
| D | 0 | 0 | 0 | 0 | 0 |
| E | 0 | 0 | 0 | 0 | 5 |
先设置两个单元格作为日期输入框(比如H1填开始日期,I1填结束日期),然后用以下公式实现自动筛选:
方案1:支持Excel 365/2021(带LAMBDA函数)
=FILTER($A$2:$F$6, BYROW($B$2:$F$6, LAMBDA(row, SUM(--(($B$1:$F$1>=H1)*($B$1:$F$1<=I1)*row<>0))>0)), "无符合条件的行")
逻辑说明:
($B$1:$F$1>=H1)*($B$1:$F$1<=I1):标记出日期在指定区间内的列*row<>0:再标记出这些列中数值非0的单元格SUM(--(...))>0:如果该行在日期区间内有至少一个非0值,就返回TRUE(保留该行)BYROW遍历每一行执行上述判断,最终用FILTER筛选出符合条件的行
方案2:兼容旧版Excel(无LAMBDA)
=FILTER($A$2:$F$6, MMULT(--(($B$1:$F$1>=H1)*($B$1:$F$1<=I1)*($B$2:$F$6<>0)), ROW($B$1:$F$1)^0)>0, "无符合条件的行")
逻辑说明:
($B$1:$F$1>=H1)*($B$1:$F$1<=I1)*($B$2:$F$6<>0):生成二维数组,符合日期区间且数值非0的位置为1,其余为0MMULT(..., ROW($B$1:$F$1)^0):对每行求和,ROW(...)^0生成全1的列向量,实现跨行求和>0:判断每行求和结果大于0(即存在非0值),作为筛选条件
使用时只需根据你的实际数据区域,修改公式中的单元格引用即可。
内容的提问来源于stack exchange,提问作者jahnLudvik
相关产品推荐
相关产品推荐

