ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6648|回复: 8

[求助] Excel Power query 提取多个工作簿指定单元格数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-3-20 22:37 | 显示全部楼层 |阅读模式
本帖最后由 amiewk 于 2020-3-20 22:40 编辑

平时用VBA实现,每次原始数据模板和提取数据的要求发生变化,只改几下代码就好了。但由于这项统计工作要移交给不会VBA,只会点鼠标的人去做,因此想用power query来做好功能,教给新人。但没想到研究了一个多小时,仍然没搞明白。
特来求助大神,万分感谢!

原始数据:同一文件夹下,命名从1到N的Excel文件。同一次数据处理时,每个Excel文件的模板完全相同。但今天和明天两次数据处理时,所用Excel模板并不相同。今天需要提取的数为(标蓝)://利/明天的模板里,也许就变成要取的数(标蓝):/数/利///高//税
请不要问为什么原始数据这么奇葩,就是这么奇葩。
Excel内的数据:需要提取每个Excel文件中的几个指定单元格内容,到新的Summary表中。
Summary表的结构:A列:每个原始文件的文件名;B列:每个文件中抓的第一个单元格;C列:每个文件中抓的第二个单元格…………

示例:

图1:汇总表与原始数据文件夹
image.png
图2:原始数据(以同一文件夹下的4个文件为例,命名有规律,但数量不定)
image.png
图3:每个Excel文件内的数据示例(以1.xlsx为例,每个Excel文件格式虽然相同,但文件并不是字段格式,而是报表式的格式。)
image.png

图4:汇总后效果(其中7.0x数据认为是无效数据,不进行汇总)
image.png

image.png
image.png

CMM.zip

30.05 KB, 下载次数: 64

TA的精华主题

TA的得分主题

发表于 2020-3-21 12:04 | 显示全部楼层
你自己改一下数据源就行了,数据表里不能有多余的东西,必须是上面是标题,下面是数字,最后没用的列删了就行
  1. let
  2.     源 = Folder.Files("E:\10590\Desktop\CMM\CMM Data"),
  3.     删除的其他列 = Table.SelectColumns(源,{"Content", "Name"}),
  4.     重排序的列 = Table.ReorderColumns(删除的其他列,{"Name", "Content"}),
  5.     取表格 = Table.TransformColumns(重排序的列,{"Content",each Excel.Workbook(_){[Name="Sheet1"]}[Data]}),
  6.     整理 = Table.TransformColumns(取表格,{"Content",each Table.PromoteHeaders(Table.FromColumns(List.Split(List.RemoveNulls(List.Combine(Table.ToColumns(_))),2)))}),
  7.     展开 = Table.ExpandTableColumn(整理, "Content", List.Distinct(List.Combine(List.Transform(整理[Content],each Table.ColumnNames(_)))))
  8. in
  9.     展开
复制代码

CMM.zip

37.55 KB, 下载次数: 122

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-22 11:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
0星剑0 发表于 2020-3-21 12:04
你自己改一下数据源就行了,数据表里不能有多余的东西,必须是上面是标题,下面是数字,最后没用的列删了就 ...

经过测试,非常好用,非常感谢!
请问,以下部分的函数,是手工输入的,还是通过在power query功能区,鼠标点选生成的呢?

    整理 = Table.TransformColumns(取表格,{"Content",each Table.PromoteHeaders(Table.FromColumns(List.Split(List.RemoveNulls(List.Combine(Table.ToColumns(_))),2)))}),
    展开 = Table.ExpandTableColumn(整理, "Content", List.Distinct(List.Combine(List.Transform(整理[Content],each Table.ColumnNames(_)))))
in
    展开

TA的精华主题

TA的得分主题

发表于 2020-3-23 20:45 | 显示全部楼层
let
    源 = Folder.Files("C:\Users\Administrator\Desktop\CMM\CMM Data"),
    自定义1 = Table.TransformColumns(源,{"Content",each  let t=Excel.Workbook(_){0}[Data] in
   #table({"价","数","利","税"},{  {t{1}[Column1],t{3}[Column1],t{3}[Column2],t{4}[Column3]          }               })      
    }),
    删除的其他列 = Table.SelectColumns(自定义1,{"Content", "Name"}),
    重排序的列 = Table.ReorderColumns(删除的其他列,{"Name", "Content"}),
    #"展开的“Content”" = Table.ExpandTableColumn(重排序的列, "Content", {"价", "数", "利", "税"}, {"价", "数", "利", "税"})
in
    #"展开的“Content”"

TA的精华主题

TA的得分主题

发表于 2020-3-23 20:54 | 显示全部楼层
0星剑0 发表于 2020-3-21 12:04
你自己改一下数据源就行了,数据表里不能有多余的东西,必须是上面是标题,下面是数字,最后没用的列删了就 ...

老师帮忙看一下这个怎么弄http://club.excelhome.net/thread-1527684-1-1.html

TA的精华主题

TA的得分主题

发表于 2020-3-25 10:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
kissyui 发表于 2020-3-23 20:54
老师帮忙看一下这个怎么弄http://club.excelhome.net/thread-1527684-1-1.html

帮不到你了,BI我也没用过,只是对PQ有点了解

TA的精华主题

TA的得分主题

发表于 2020-3-25 10:40 | 显示全部楼层
本帖最后由 0星剑0 于 2020-3-25 10:42 编辑
amiewk 发表于 2020-3-22 11:32
经过测试,非常好用,非常感谢!
请问,以下部分的函数,是手工输入的,还是通过在power query功能区, ...

取表格、整理、展开是手动输的,展开本来是直接展开的,不过是固定的{"价", "数", "利", "税"},我给改成自动获取了

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-7-28 10:00 | 显示全部楼层
0星剑0 发表于 2020-3-21 12:04
你自己改一下数据源就行了,数据表里不能有多余的东西,必须是上面是标题,下面是数字,最后没用的列删了就 ...

大佬请教一下,修改完成合适数据源后运行,程序报错“Expression.Error: 导入 List.Split 没有匹配的导出。是否缺少模块引用?” 请问是什么原因?该如何解决?谢谢您!

TA的精华主题

TA的得分主题

发表于 2020-7-28 10:03 | 显示全部楼层
Ricardo_h_ja 发表于 2020-7-28 10:00
大佬请教一下,修改完成合适数据源后运行,程序报错“Expression.Error: 导入 List.Split 没有匹配的导出 ...

详情如下,编辑器截图
cmm.PNG
CMM1.PNG
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 14:53 , Processed in 0.047515 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表