首页 > 其他分享 >PowerQuery 汇总系列 - 单个Excel工作薄文件、多工作表

PowerQuery 汇总系列 - 单个Excel工作薄文件、多工作表

时间:2024-07-13 18:01:31浏览次数:11  
标签:Sheet 表格 Excel 汇总 工作 步骤 Table PowerQuery

文章目录


Authors
@ 樊笼星海
@ w180361
@ Email:[email protected]

1. 写在前面,多工作表汇总也有坑

  我见过一些同事,先获取到文件内的所有工作表,然后使用追加查询合并数据的操作,这种方式太繁琐,也不够灵活。

  多数已经在工作的小伙伴,并不清楚在 Excel 工作薄文件中,工作表Sheet 不等于 表格Table,我们也都习惯了叫它Excel表格。

  平常我们仅仅使用 Excel 表格时,可以不在乎这些东西有什么区别,甚至不需要知道。然而,在使用了微软的 ETL 工具之后,即 PowerQuery,不得不去在乎这些内容的区别,否则容易犯下大错。

  读过这篇文章的小伙伴,需要知道工作薄、工作表、表格、单元格、行、列相关概念有所区别,当我们不再以单元格的视角去看待表格时,这尤为重要。关于工作表与表格的概念,这里不详细解释区分了。如有兴趣,可搜索其他文章。

  下面从 PowerQuery 的视角,去看看工作表与表格的区别。如果不注意,将会汇总到重复的数据。


2. 删除自动生成的步骤,重新开始

  前面有说过 PowerQuery 从单工作薄文件、单工作表获取数据时,PQ 会自动生成 4 个步骤,其中第二个步骤【导航】是用来选择工作表。

  也就是说第一个步骤已经包含工作薄文件的所有工作表Sheet与表格Table,那我们在汇总多个工作表时,便可以把后面生成的三个步骤的删除掉。

  具体步骤如下:

  1. 删除自动生成的查询步骤,只留下第一个查询步骤。
    每个查询步骤的前面会有一个,点击可删除此查询步骤。
    [图片]

  2. 强调一下:SheetTable的区别。删除查询步骤之后,会发现Kind字段下,有Table文字显示,这表示这一行的数据来源于表格Table,又因为表格是存在于工作表里面,所以同一份数据被不同的方式获取了两次,如果不进行剔除,将会导致重复汇总。

示例文件由作者准备,刻意在4月份的工作表中,将区域转换成了表格Table,以示区别。若不剔除,4月份的数据将会重复汇总。

[图片]

  1. 获取所有工作表Sheet数据,先筛选Kind字段,剔除不需要重复的数据。
    = Table.SelectRows(源, each ([Kind] = "Sheet"))
    [图片]

  2. 保留Data列,删除其他列。预览时发现标题在第一行,将第一个查询步骤中Excel.Workbook的第二参数,改为true即可。
    [图片]

  3. 点击列的右上角,随后点击确定,把数据展开。无需使用原始列名作为前缀,取消勾选。
    [图片]

  4. 最后的结果
    [图片]


3. 删除自动生成的步骤,开始改写

不要忘记了,前面改写过第一个查询步骤,Excel.Workbook的第二个参数true。

  1. 保留筛选的行,即保留工作表Sheet的数据。
    = Table.SelectRows(源, each ([Kind] = "Sheet"))
    [图片]

  2. 取Data列,在公式后面加上[Data]
    = Table.SelectRows(源, each ([Kind] = "Sheet"))[Data]
    [图片]

  3. 套上Table.Combine
    = Table.Combine(Table.SelectRows(源, each ([Kind] = "Sheet"))[Data])
    [图片]


4. 指定工作表汇总

  在工作当中,很少有这样规范的数据,直接给到你进行整理,太多复杂离谱的需求暂且不说。来说说比较简单的指定工作表汇总,尤以汇总其他同事手工做表的情况,统一工作表名称是最基础的,但有时总会冒出一些新的表来,那些你明明不需要。

  本节只讨论单个工作薄文件的汇总,相对来说,变化较少,也许几个关键词就够。

4.1. 按单个关键词

上述案例中,要求工作表名称包含“月”字的工作表数据。

  1. 点击列的右上角,选择文本筛选器,除了等于、不等于外,还有开头、结尾、包含的判断。这里我们选择包含“月”字。
    [图片]

  2. 选择包含后,出现筛选行 的界面。随后点击确定,得到筛选结果后,按正常步骤进行汇总即可。
    = Table.SelectRows(筛选的行, each Text.Contains([Name], "月"))
    [图片]

4.2. 按多个关键词

上述案例中,要求汇总第二个季度的数据,即取 4月、5月、6月等 6 个工作表的数据。

  1. 筛选行的界面,最多只能填两个参数。先自动生成一个,然后看看怎么改。
    [图片]

  2. 自动生成的公式,判断条件是串起来的,那咱就继续加。
    [图片]

  3. 咱假设关键词很多,怎么办?为以防万一,预先做一个关键词表,从 Excel 导入 PowerQuery,合并成文字即可使用。
    [图片]

除了合并成字符串,还有以下其他方法。前两种适合工作表名称与关键词一致的,第 3 种,适合工作表名称包含关键词的。

改法 1:

Table.SelectRows(筛选的行, each Text.Contains("4月5月6月", [Name]))

改法 2:

Table.SelectRows(筛选的行, each List.Contains({"4月","5月","6月"}, [Name]))

改法 3:

Table.SelectRows( //判断每一个工作表名称是否包含其中一个关键词,有其一即为 true。
	筛选的行,
	( row )=> List.AnyTrue( 
	  	List.Transform( 
		    {"4","5","6"},
		    ( key )=> Text.Contains( row[Name], key )
	    )
	)
)

文章难免有疏漏,若读者发现某处编辑有误,可评论留言。


相关问题也可找作者进行咨询,DIY定制皆可。


Authors
@ 樊笼星海
@ w180361
@ Email:[email protected]

标签:Sheet,表格,Excel,汇总,工作,步骤,Table,PowerQuery
From: https://blog.csdn.net/weixin_42696938/article/details/140403162

相关文章

  • 软件安装下载失败,常见问题汇总(微软软件必备运用库)
    文章目录前言一、卸载软件二、激活软件无法打开?三、安装软件必备运用库扩展:win64位操作系统跟win32位操作系统区别之处前言我们在安装激活一些常用的办公软件,如:visio、Matlab、office等等,经常会遇到各种问题,接下来我会介绍一些方法,大家可以尝试看能否解决问题。一、......
  • Spring Boot 框架知识汇总
    1、什么是SpringBoot?通过SpringBoot,可以轻松地创建独立的,基于生产级别的Spring的应用程序,您可以“运行"它们。大多数SpringBoot应用程序需要最少的Spring配置,集成了大量常用的第三方库配置,使得这些库在SpringBoot应用中几乎可以零配置地开箱即用。2、SpringBoot的特征?......
  • 前端大屏适配方案汇总
    ......
  • 用python处理excel数据
    1.小技巧:用print()检查代码,可以把想检查的变量作为参数放进括号内打印出来,便于检查2.第三方库:1.xlrd读取excel文件。 2.xlwt写入excel文件。 3.xlutils一组excel高级操作的工具3.xlrd包含四个功能:1.读取有效单元格的行数和列数。2.读取指定行或列所有单元格的值。3.读取......
  • excel单元格设置为文本为何还要双击
    excel单元格设置为文本时为何还要双击才有效?我选定一行,用右键设置为文本,为何还要单个逐一双击才有效,否则选定求和时(包含其中一个单元格),仍视为数值。而逐一双击太麻烦,怎么解决?因为这是excel默认设置,如想要不单个操作,可使用分列的方式来批量处理。具体操作方式如下:1、以Excel201......
  • excel表格中怎样将一列的数值全部加上一个数值
    1、打开目标文件             2、然后在B1或者其它单元格中输入数字“10”,如图所示。           3、然后鼠标右击此单元格,在右键菜单中执行“复制”命令。            4、然后选中要加10的所有数据,在右键......
  • .NET/C#、Netcore、数据库、Redis 、RabbitMQ&kafka、Docker ⾯试题汇总系列目录
    .NET/C#⾯试题汇总系列.NET/C#⾯试题汇总系列:ASP.NET常见面试题001.NET/C#⾯试题汇总系列:ASP.NET常见面试题002.NET/C#⾯试题汇总系列:ASP.NET常见面试题003.NET/C#⾯试题汇总系列:基础语法.NET/C#⾯试题汇总系列:ASP.NETMVC.NET/C#⾯试题汇总系列:多线程.NET/C#⾯......
  • 8、matlab彩色图和灰度图的二值化算法汇总
    1、彩色图和灰度图的二值化算法汇总原理及流程彩色图和灰度图的二值化算法的原理都是将图像中的像素值转化为二值(0或1),以便对图像进行简化或者特定的图像处理操作。下面分别介绍彩色图和灰度图的二值化算法的原理及流程:1)彩色图的二值化算法原理及流程(1)原理:彩色图的二值化算法......
  • 时间序列分析方法汇总对比及优缺点和适用情况(上)--1. 移动平均 2. 指数平滑 3. 自回归
    目录1.移动平均(MovingAverage)2.指数平滑(ExponentialSmoothing)3.自回归模型(AutoregressiveModel,AR)4.移动平均模型(MovingAverageModel,MA)5.自回归移动平均模型(ARMA) 1.移动平均(MovingAverage)移动平均是平滑时间序列的一种技术,旨在通过消除短期波动来揭示......
  • 智能小程序 Ray 开发门锁 API ——用户 API 接口汇总
    获取当前登录用户信息getCurrentMemberInfo引入@ray-js/ray^1.5.0以上版本可使用import{getCurrentMemberInfo}from'@ray-js/ray'参数CurrentMemberInfoParams属性类型必填说明devIdstring是设备IDdpIdsstring是数据点ID返回CurrentMemberInfoResult属性类......