如何实现Excel工作簿间每日机器数据的动态导入?
跨工作簿动态导入当日机器数据的解决方案
方法一:公式法(实时匹配,需源工作簿打开)
假设第一个工作簿名为每日机器数据.xlsx,每日工作表命名为YYYY-MM-DD格式(如2024-05-20),第二个工作簿中每个机器工作表的A列为机器名称,要导入对应当日的Number1/Number2/Number3:
- 在第二个工作簿的目标单元格(如B2)输入公式,匹配Machine 1的当日Number1:
=XLOOKUP($A2,"[每日机器数据.xlsx]"&TEXT(TODAY(),"YYYY-MM-DD")&"!$A:$A","[每日机器数据.xlsx]"&TEXT(TODAY(),"YYYY-MM-DD")&"!$B:$B","无数据") - 复制公式到C2、D2,分别将公式中的
$B:$B替换为$C:$C、$D:$D,即可获取Number2和Number3。 - 若源工作簿的工作表命名格式不同(如
5月20日),修改TEXT(TODAY(),"YYYY-MM-DD")为对应格式,比如TEXT(TODAY(),"M月D日")。
注意:源工作簿必须处于打开状态,公式才会自动刷新;若需离线更新,可手动刷新或改用Power Query。
方法二:Power Query法(自动批量导入,支持离线刷新)
适合不需要手动维护公式,批量处理所有机器数据的场景:
- 在第二个工作簿中,点击「数据」选项卡→「获取数据」→「从文件」→「从工作簿」,选择第一个工作簿。
- 在弹出的导航器中,勾选「选择多项」,选中所有每日工作表,点击「转换数据」进入Power Query编辑器。
- 在编辑器中:
- 点击「添加列」→「自定义列」,输入公式提取工作表日期:
=Date.From([Name])(若工作表名是文本日期,需调整格式匹配) - 添加筛选器,筛选自定义列等于
=Date.From(DateTime.LocalNow())(当日日期) - 点击「合并查询」或「分组依据」,按机器名称整理数据
- 点击「添加列」→「自定义列」,输入公式提取工作表日期:
- 将处理后的数据加载到对应机器的工作表,设置刷新选项:右键查询→「属性」→勾选「打开文件时刷新数据」,或设置定时刷新。
关键注意事项
- 源工作簿的每日工作表命名规则必须完全一致,否则公式或Power Query会无法匹配
- 若机器名称存在重复,需在公式或Power Query中明确匹配逻辑(如取第一条记录、汇总数值等)
- Power Query支持离线刷新,无需保持源工作簿打开
内容的提问来源于stack exchange,提问作者James Johnson
相关产品推荐
相关产品推荐

