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

【Power Query】追加查询(动态列,动态路径)

思路:

  • 先在文件夹内新建一个Excel 工作表用于存放结果,避免数据重复
  • 为避免多表追加后,上载时新增一倍工作表,直接在源上进行筛选,只留下Binary,再+自定义列,用Binary来定义出Table,删掉Binary,展开Table
  • 在展开前,增加动态列表,生成不重复的所有字段,自动刷新同步
  • 将固定路径替换成 动态路径,自动查询文件所在地址,避免因挪动文件夹而失效

步骤:

源筛选和添加自定义列:

  1. 先在文件夹里新建一个Excel文件,命名好,方便筛选
    打开,追加完的结果就放在这里
  2. 我们点【数据】>>【获取数据】>>【来自文件】>>【来自文件夹】
    选择当前打开的这个文件夹,直接点【转换数据】,其他什么都不要动
  3. 进来PQ的界面,步骤里只有一个【源】,按文件类型(Extension) 和名字(Name)筛选一下先
    记得自己当前打开的工作簿名字,都要去掉,其中会有一个带~后缀
    只留下【Binary】,选中这列 【删除其他列】,这列里是二进制的表格数据
  4. 接着点左上角【自定义列】这步是用来把table 定义出来
    在公式栏里写上:

=Excel.Workbook([Content],true,true)

  1. 回车,这时候table 已经出来了,那content列,也就是Binary 就可以删掉了
    只留下自定义列
    接下来就可以把table展开了,注意不要勾选前缀

生成所有字段列表:

  1. 在展开的上一步,也就是 [删除的其他列1],右键【插入步骤后】,就可以新增一个步骤,用来同步新增的字段
  2. 可以重命名,我命名为【所有字段名】,我们在公示栏里输入:

=List.Distinct(List.Combine(List.Transform(删除的其他列1[Data],each Table.ColumnNames(_))))

注意其中【删除的其他列1】,如果上一步名字是这个就不用改,是什么改什么

  1. 接着要在展开步骤里,将“data” 前面的【所有字段名】几个字改成【删除的其他列1】,后面的括号里的字段,替换成【所有字段名】,也就是这样:

= Table.ExpandTableColumn(删除的其他列1, “Data”,所有字段名)

还是你命名什么就是什么,也可以跟我一样哈哈哈
这样就做好动态更新了,我们可以上载试试看

自主查找路径:

既然回到Excel了,正好可以新建一个sheet,重命名为路径
随便选一个地方,输入公式,直接就可以看到路径啦:

=LEFT(CELL(“filename”),FIND("[",CELL(“filename”))-2)

在这里插入图片描述
不同情况下的路径查询函数:
在这里插入图片描述

动态路径获取:
同文件下:
=LEFT(SUBSTITUTE(CELL(“filename”),"[",""),FIND("]",SUBSTITUTE(CELL(“filename”),"[",""))-1)
不同文件下:
=LEFT(CELL(“filename”),FIND("[",CELL(“filename”))-1)&“追加查询结果.xlsx”
只查询路径到文件:
=LEFT(CELL(“filename”),FIND("[",CELL(“filename”))-2)

  1. 再将这个有路径的单元格定义名称,我写的是path

  2. 回到刚才的查询,我们可以点中上载的那张表格,一般屏幕上方会有【查询】选项卡,里面找到【编辑】这一栏就可以回去啦 (如果没有,那【数据】下也有【查询和连接】,可以在右侧调出历史查询,右键编辑)在这里插入图片描述

  3. 进去之后,在步骤里面点中【源】,因为路径在源里,我们需要把这里公式栏的固定路径,替换掉,双引号也要一起,也就是括号()里的内容,以下是用来替换的:

Excel.CurrentWorkbook(){[Name=“path”]}[Content]{0}[Column1]

  1. 这样文件夹就可以自由挪动了,不过要整个文件夹一起挪走,不然路径不统一

− ∗ T ∗ H ∗ A ∗ N ∗ K ∗ S ∗ − -*T*H*A*N*K*S*- THANKS


http://www.kler.cn/a/319572.html

相关文章:

  • sol机器人pump机器人如何实现盈利的?什么是Pump 扫链机器人?
  • 【自用】0-1背包问题与完全背包问题的Java实现
  • css:盒子模型
  • 封装el-menu
  • Node.js笔记
  • 使用pytest+openpyxl做接口自动化遇到的问题
  • 微软宣布弃用WSUS,企业用户尽早准备替换方案
  • [RabbitMQ] RabbitMQ介绍,安装与快速上手
  • 虚拟机开启网络代理设置,利用主机代理访问国外资源
  • Vue3:toRaw与markRaw
  • LeetCode 210. 课程表 II
  • yum 集中式安装 LNMP
  • 当电子设计竞赛照进生活!
  • 深入探秘 WorkManager:Android 异步任务管理的强大工具
  • 探索《藏汉翻译通》小程序:跨平台的藏文翻译利器
  • PostgreSQL - pgvector 插件构建向量数据库并进行相似度查询
  • django应用JWT(JSON Web Token)实战
  • C语言习题~day35
  • 产业报告 | 2024年中国机器人产业研究报告
  • 【裸机装机系列】15.kali(ubuntu)-重装linux步骤
  • android 14分屏实战之小米su7的3分屏实现方案讨论及线索征集
  • 智慧城市运营模式--政府和社会资本合作
  • 【Java数据结构】--- 优先级队列
  • fastjson的json字符串转List
  • 移动技术开发:ListView水果列表
  • C++ prime plus-7-編程練習