如何用VLOOKUP提取多工作表中指定日期范围内的全部记录
提取跨工作表指定日期范围的记录
方法一:动态数组函数法(Excel 365/2021及以上版本)
利用VSTACK合并多表数据,再用FILTER筛选符合日期范围的记录,数据会自动同步更新。
- 假设所有目标工作表(Sheet2、Sheet3等)的A2:C区域是数据区(跳过表头),在Sheet1的空白起始单元格(比如A3)输入公式:
=FILTER(VSTACK(Sheet2!A2:C, Sheet3!A2:C), (INDEX(VSTACK(Sheet2!A2:C, Sheet3!A2:C),,1)>=B1)*(INDEX(VSTACK(Sheet2!A2:C, Sheet3!A2:C),,1)<=D1))
- 若目标工作表是连续的(比如Sheet2到Sheet5),可简化合并区域为
VSTACK(Sheet2:Sheet5!A2:C) - 若需要保留表头,可在合并时加入表头区域,比如
VSTACK(Sheet2!A1:C1, Sheet2!A2:C, Sheet3!A2:C),同时调整筛选逻辑排除表头行
方法二:Power Query法(全版本Excel适用)
适合工作表数量多、需频繁更新数据的场景,操作更灵活可控。
- 进入Power Query编辑器:
点击「数据」选项卡 → 「获取数据」→ 「自文件」→ 「自工作簿」,选择当前打开的工作簿。 - 合并目标工作表:
在导航器勾选所有需要提取数据的工作表(Sheet2、Sheet3等),点击「转换数据」;
点击「主页」→ 「合并查询」→ 「将查询合并为新查询」→ 「追加查询」,选择「追加多个表」并添加所有选中的工作表。 - 筛选日期范围:
点击日期列的筛选按钮 → 「日期筛选器」→ 「自定义筛选」,设置「大于或等于」Sheet1的B1单元格值,「小于或等于」Sheet1的D1单元格值。
(若需动态关联日期范围,可先将Sheet1的B1:D1加载到Power Query,再通过合并查询关联筛选) - 加载数据到Sheet1:
点击「主页」→ 「关闭并上载」,选择加载到Sheet1的指定位置(比如A3开始)。后续数据更新时,右键点击加载区域选择「刷新」即可同步。
注意事项
- 所有目标工作表的A、B、C列结构需完全一致(列名、数据类型统一)
- 确保所有日期单元格格式为「日期」,避免因格式错误导致筛选失效
- 函数法新增工作表时需手动修改公式;Power Query可通过修改M代码实现自动检测新增工作表
内容的提问来源于stack exchange,提问作者solquest
相关产品推荐
相关产品推荐

