Excel 365如何筛选指定日期落在行有效区间内的记录,实现动态视图
最优实现方案(基于Excel 365 动态数组函数)
前置准备:将源数据转换为结构化表
- 打开存放原始数据的工作表,选中所有包含表头的原始数据区域
- 按下快捷键
Ctrl+T,在弹出的对话框中勾选「表包含标题」,点击确定 - 在「表设计」选项卡中将表名修改为
SourceTbl,方便后续引用
单公式实现动态视图
在存放视图的工作表中,选中你要展示结果的左上角单元格(比如A1),直接输入如下公式即可:
=FILTER(SourceTbl, (C2>=SourceTbl[Valid From])*(C2<SourceTbl[Valid To])*(SourceTbl[Label]<>""), "无符合条件的记录")
公式逻辑说明:
- 第一参数
SourceTbl直接引用整个源数据表,结构化表会自动同步源数据的行增删、修改操作,不管是末尾追加还是中间插入行都会自动更新引用范围 - 第二参数是过滤条件:
C2>=SourceTbl[Valid From]:测试日期晚等于该行生效起始时间C2<SourceTbl[Valid To]:测试日期早于该行失效时间SourceTbl[Label]<>"":排除源表中的空白行- 用
*连接三个条件等价于同时满足,会返回和源表行数一致的布尔数组,FILTER会保留所有对应值为TRUE的行
- 第三参数是无符合条件记录时的提示内容,可根据需求修改
方案优势
- 无任何辅助列,单个公式完成所有逻辑,不需要隐藏多余列
- 结果自动溢出,无需提前预留空白行,有多少符合条件的记录就展示多少行,无冗余空间
- 自动同步源表变更:不管是源表新增行、插入行、修改数据,还是修改测试日期,视图都会自动刷新,不需要手动调整公式引用
- 完全只读,符合视图需求
可选优化
如果需要默认用当前日期作为测试日期,不需要手动修改参数单元格,直接把公式里的C2替换为TODAY()函数即可。
内容的提问来源于stack exchange,提问作者Aaron Digulla
相关产品推荐
相关产品推荐

