当前位置: 首页 > java >正文

Power Query动态追加查询(不同工作簿下)

这是Power Query实战工作场景第二期--动态追加查询(不同工作簿下)

实现即使修改数据文件路径,依然可以动态实时刷新数据
数据资源已经与这篇博客捆绑,有需要者可以下载通过网盘分享的文件:数据.xlsx、合并.xlsx等2个文件
链接: https://pan.baidu.com/s/1oGnfFZFZgwjAOd617_RtLQ?pwd=0623 提取码: 0623 
 

在工作中我们经常要用Power Query对数据进行处理后实时增加数据,实现动态刷新。首先是最常规的办法
方法一
1.新建一个空白xlsx文件,命名为合并.xlsx,这里我们的合并-副本.xlsx文件位于E:\追加查询汇总多个工作表\合并.xlsx,打开文件合并.xlsx(这里新建的合并.xlsx和数据-副本.xlsx文件都位于E:\追加查询汇总多个工作表下)

2.获取数据-->来自文件-->从Excel工作簿,找到位于E:\追加查询汇总多个工作表\数据-副本.xlsx,选择多项,全部导入。,点击转换数据。

2.点击追加查询-->将查询追加作为新查询(不会修改原表),选择三个或更多表,添加我们这里的三个表,点击确定就是我们已经追加完后的表了。点击确定后,选择关闭并上载至,选择新建工作表。


3.回到数据-副本.xlsx,在表1增加一行勇太 66 66 66 66,按ctrl+s保存,然后再次回到合并.xlsx。
数据-->全部刷新,发现数据正确刷新。

4.回到数据-副本.xlsx,在表1增加一列物理 99 99 99 99,按ctrl+s保存,然后再次回到合并.xlsx。
数据-->全部刷新,发现数据正确刷新。


5.将包含这两个xlsx的追加查询汇总多个工作表这个文件夹移动到D:\追加查询汇总多个工作表,再次打开数据-副本.xlsx,删除表1物理这一列,再次打开合并.xlsx,点击数据-->全部刷新。数据不能正常刷新了。



这个方法操作简单,适合于文件夹不需要移动的数据源,但是实际工作场景中,数据源需要被随时拷到U盘或者传到同事的电脑里,此时这个方法就不适用了。

方法二
1.删掉刚刚的合并.xlsx,重新新建一个空白的工作簿。命名为合并.xlsx。打开D:\追加查询汇总多个工作表\合并.xlsx.获取数据-->来自文件-->从Excel工作簿,找到位于D:\追加查询汇总多个工作表\数据-副本.xlsx,选择表1,点击转换数据。


2.删除多余的应用步骤,只保留源。点击Table,发现第一行不是列名,将
= Excel.Workbook(File.Contents("D:\追加查询汇总多个工作表\数据 - 副本.xlsx"), null, true)改为
= Excel.Workbook(File.Contents("D:\追加查询汇总多个工作表\数据 - 副本.xlsx"), true, true)



3.按住ctrl,选择删除Item、Kind、Hidden列,展开Data列。



= Table.ExpandTableColumn(删除的列, "Data", {"姓名", "语文", "数学"}, {"姓名", "语文", "数学"})
我们发现只有姓名、语文、数学这三列,以后再添加其它列怎么办?
所以我们要做两件事,一件事是动态添加列名,另外一件事是解决路径问题。
4.右键删除的列,点击插入步骤后,自定义1命名为字段名。将展开的"Data"的函数里的字段名,改为删除的列,即
= Table.ExpandTableColumn(字段名, "Data", {"姓名", "语文", "数学"}, {"姓名", "语文", "数学"})改为= Table.ExpandTableColumn(删除的列, "Data", {"姓名", "语文", "数学"}, {"姓名", "语文", "数学"})

5.在字段名这个应用步骤里,增加函数,动态识别字段名
= List.Distinct(List.Combine(List.Transform(删除的列[Data],each Table.ColumnNames(_))))

6.在展开的"Data"将
Table.ExpandTableColumn(删除的列, "Data", {"姓名", "语文", "数学"}, {"姓名", "语文", "数学"})改为
= Table.ExpandTableColumn(删除的列, "Data",字段名)

发现动态的识别新增加的列名,成功解决第一件事,第二件事就是解决我们源这个应用步骤里写死的路径问题。
7.关闭并上载至,插入工作表,重名为路径。原追加后表1重名为合并。在A1单元格增加函数
=LEFT(CELL("filename"),FIND("[",CELL("filename"))-1)&"数据-副本.xlsx"
在实际工作中,我们只需要改后面"数据-副本.xlsx"这个地方,我们实际工作中文件是什么名字就改成什么名字。

8.在数据选项卡里,点击定义名称,选择A1单元格,命名为bi

9.回到合并这个表,找到右侧的查询&连接,右键表1,选择编辑重新进入Power Query

10.将源的函数= Excel.Workbook(File.Contents("D:\追加查询汇总多个工作表\数据 - 副本.xlsx"), true, true)中的"D:\追加查询汇总多个工作表\数据 - 副本.xlsx"替换为
Excel.CurrentWorkbook(){[Name="bi"]}[Content]{0}[Column1]
这里你只需要修改Name,值为你具体定义的名称。
关闭并上载,保存一下

11.剪切追加查询汇总多个工作表这个文件夹,剪切到桌面,打开数据-副本.xlsx。在表1中将勇太改为六花,点击保存。打开合并.xlsx,打开数据选项卡-->全部刷新
切记在刷新前一定要保存修改后的数据,否则刷新是没有变化的



最后提醒大家,我们移动的话,一定是移动整体的文件夹,不要单独移动某个文件,否则会失效
不要改随便改例如数据-副本原始名称,如果要改,就必须重新进入合并.xlsx里面,修改=LEFT(CELL("filename"),FIND("[",CELL("filename"))-1)&"数据-副本.xlsx",修改&后面的文件名字

http://www.xdnf.cn/news/12841.html

相关文章:

  • 论文略读:Position: AI Evaluation Should Learn from How We Test Humans
  • PLC入门【2】PLC的接线
  • 系统模块与功能设计框架
  • 对F1分数的基本认识
  • 【AI论文】VS-Bench:评估多智能体环境中的视觉语言模型(VLM)在策略推理与决策制定方面的能力
  • 个人感悟-构建1000人商业帝国的战略计划
  • vulnyx lower2 writeup
  • 【优选算法】分治
  • Java线程池
  • nginx配置文件
  • leetcode238-除自身以外数组的乘积
  • 【JVM面试篇】高频八股汇总——Java内存区域
  • 华为OD机考 - 水仙花数 Ⅰ(2025B卷 100分)
  • 8. 二叉树(随想录)
  • 本地缓存在Java中的实现方式
  • “图像说话,文本有图”——用Python玩转跨模态数据关联分析
  • 【2025CVPR】模型融合新范式:PLeaS算法详解(基于排列与最小二乘的模型合并技术)
  • 飞云控盘指标-副图指标-买点一持仓操作技术图文解说
  • 初级程序员入门指南
  • 跟进一下目前最新的大数据技术
  • 设备驱动与文件系统:06 目录与文件
  • 骨盆-x光参数
  • python生成器
  • SWAN(Scade One) 语言原理介绍
  • Linux中《进程控制》详细介绍
  • RootSIFT的目标定位,opencvsharp。
  • DOM(文档对象模型)深度解析
  • 开源项目实战学习之YOLO11:12.6 ultralytics-models-tiny_encoder.py
  • 【深度学习-Day 25】告别过拟合:深入解析 L1 与 L2 正则化(权重衰减)的原理与实战
  • 标准代码项目开发流程学习指南