power query学习笔记——合并数据
利用Power Query按条件合并文本

利用Power Query按条件合并单元格中的文本如图1所示表格,左侧工作表是销售出库表,右边是根据左边表格生成的按单号合并的商品表,很显然,当单号存在多个“商品”对象时,这些文本需要合并到同一单元格中。
处理步骤如下:图1将光标停留在如图表格中任一单元格,然后单击【数据】选项卡下【从表格】,弹出【创建表】对话框,【表数据的来源】会自动选择整个工作表,默认勾选【表包含标题】,单击【确定】,如图2,进入Power Query 编辑器界面。
图2STEP01在Power Query 编辑器界面【开始】选项卡下单击【分组依据】,弹出【分组依据】设置对话框,在这里【分组依据】选择“单号”字段,需要合并文本的一列,即【新列名】设定为“商品合并”,【操作】这里选择“求和”,【柱】这里选择“商品”,如图3,单击【确定】按钮。
在合并的结果表中结果出现“Error”,如图4.注意:⑴【操作】此处不能选择默认的“计数”,否则后面的【柱】无法选择 “商品”这个字段。
⑵因为“商品”字段列的数值类型是文本,所以在这里对其进行求和,其结果必然是错误的(即结果界面中出现Error )。
图3STEP 02图4在【开始】选项卡中单击【高级编辑器】,弹出【高级编辑器】对话框,在文本框中我们可以看到横线处的代码为对“商品”这个文本求和(List.Sum),修改此处的代码,如图5。
将“List.Sum”函数替换为“bine”,并且将数个文本之间的分隔符设定为“,”。
如下所述,改动过的代码部分已用红色字体作了提醒。
然后单击【高级编辑器】中的【完成】按钮,出现正确的结果界面,如图6。
注意:修改代码请务必以英文半角方式输入,否则代码会出现错误导致无法产生正确的结果。
bine([列名],”分隔符”):即将指定的列名下的文本以特定的符号分隔然后进行文本合并。
图5修改前:分组的行= Table.Group(更改的类型, {"单号"}, {{"商品合并", each List.Sum([商品]), type text}})修改后:分组的行= Table.Group(更改的类型, {"单号"}, {{"商品合并", each bine([商品] ,","), type text}})STEP03图6在【开始】选项卡中单击【关闭并上载】命令按钮,选择【关闭并上载至…】,将合并文本的结果加载到Excel表格中,如图7。
Power Query合并查询6种联接种类系统详解

Power Query合并查询6种联接种类详解(左外、右外、完全外部、内部、左反、右反)合并查询属于Excel Power Query中常用的功能之一,其原理是根据两个查询之间的公共列的相同与否来确定最终得到的查询结果,概念上类似于集合的交集、差集、并集、补集等概念。
虽然判定的对象是公共列,但是得到的结果中会自动扩展都周围的列,所以得到的是两个查询构成的宽表的一个数据子集表。
Power Query中的这六种连接类型,也是整个数据库类软件中最基本概念之一,虽然名称叫法可能不同,但是本质上是一样的。
合并查询比较常用的有两个用途:①用于两个查询表格的对比分析;②用于事实表和维度表之间的数据匹配。
今天就挑选一些典型的案例来给大家讲解以下这六种联接种类的合并查询(左外,右外,完全外部,内部,左反,右反)。
【软件版本】Excel 2019 家庭学生版一、用于两张相同结构表格的对比分析(顺带介绍6种联接的概念)表格介绍:现有以下两个查询:“宝可梦表1”和“宝可梦表2”(*这里为了简便直接从Power Query开始讲解,导入PQ界面的操作步骤省略)我们今天就以以上两个表格来先来讲一下Power Query合并查询中6种联接种类的概念。
这一部分我们需要做的是使用合并查询来对两个结构相同的表做对比分析。
首先,为了尝试6种不同的合并查询的联接种类,我们先需要建立一个“合并查询”,选择第一个查询“宝可梦表1”,然后单击“合并查询”右侧的下拉按钮,选择“将查询合并为新查询”。
于是,会弹出以下的“合并”窗口;我们可以看到“宝可梦表1”查询,自动被放到了上面的查询的位置;此时我们将下面的第二个查询选择为“宝可梦表2”这个查询;然后由于这两个查询的公共列为“宝可梦”这列,我们需要基于“公共列”进行合并查询的集合运算,所以需要依次单击两个查询中的“宝可梦”列,成功后两列会变为浅绿色底纹,如下图所示:然后可以在“联接种类”中6选1进行合并查询。
PowerQuery技巧之合并单簿内的多表(合并方式_直接查询_VBA建表后查询_建表后用M查询)

单簿合并多表,起始招数分两派 - <直接查询> 和 <建立表后在查询>********一种是直接从工作簿建立查询************1.不建立表,直接新建空白查询 - 导入工作簿 - 完成合并数据/查询/文件/从工作簿2.查询界面打开, 如要合并全部表, 直接右键选编辑(Edit).若是只合并若干表,则勾选多选(Select multiple items),再勾选待合并表后选编辑(Edit)3. 编辑界面打开后, 在右侧的步骤点击源(Source)再转到公示栏, 先在 = 号后添加 bine( 然后在结尾处添加 )[Data] 完成后回车* = #shared 可查询M用法4.现在只需要做些整理,就能就可以上传合并后的表去Excel里面了转换/使用第一行做标题点击筛选,反选 bb, 只保留数值5, Home 下面选关闭且上传至表(Close & Load)6. 完成~ *** 支持增加新表后自动加入查询结果.******或者用合并多工作薄的方式合并单簿多表将要合并的工作薄单独存放在一个文件夹中,然后建立查询: 数据/查询/文件/从文件夹在打开的查询界面选着添加自定义列(Add Custom Column),自定义公示栏中输入=Excel.Workbook([Content],true) 回车展开, 接着点 Data 继续展开选中结果中的 Name 和 Custom列, 管理列/删除其他列, 然后点击Custom列的展开得到下表, 删除多余列上传Excel即为所得.**PS:如果往这个文件夹这个文件夹中添加工作薄, 或者在这个工作薄中添加工作表,都会被自动添加自动添加到查询结果.********另一种是先建立表,在查询************手动建表(Ctrl+T/L),或者VBA(文末分享代码) - 纯点击 / 或者 M 代码完成合并完成合并先建立表:可以手动建表1. 所有建立成格式表, (Ctrl + T/L )所有需要合并的工作表工作表都分别建立成格式表Ctrl+F3, 在名称管理器中,查看你所要合并的表, 带特征码重命名之特征码重命名之(方便之后合并时做时筛选), 或者将不要合并的表重命名(增加新表时不用特意特征命名,直接刷新)2. 步骤-- 2.1 数据/从表建立查询-- 2.2 右侧步骤/删除其他步骤-- 2.3 点击源(Source)-- 2.4 点击公示栏, 修改公式为:= Excel.CurrentWorkbook() 后回车3. 点击筛选, 过滤为只显示不包含 "_不合并"的表4, ,反选下框, 将结果的列名不使用原列名为前缀, 点击 Expand5. 之后上传excel6. 完成. *** 支持增加新表后自动加入查询结果.***添加新表后刷新,自动加入查询结果:****先建立表: 用M 代码完成合并完成合并1.先将所有待合并表格式表(Table)所有待合并表建立成格式表2. 数据/ 从表格建立查询3. 删除步骤,只保留源(Source), 选择合并/追加 (只是为了帮助理解M,可省略步骤)3. 追加本身 (只是为了帮助理解M,可省略步骤)4. 查看/高级编辑打开后可看见M此处代码为高级编辑打开letSource = Excel.CurrentWorkbook(){[Name=”tblNorth”]}[Content],#”Appended Query” = bine({Source, Source})in#”Appended Query”显然, bine 语句是把前一句定义的源(Source) 进行了自我合并.于是简单了, let 后面把所有需要合并的表定义加进去, 再用bine 合并起来就完成了. **当然, 有新表加入新表加入的时候,只能手动编辑了.此处代码:letSource1 = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],Source2 = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],Source3 = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],Source4 = Excel.CurrentWorkbook(){[Name="Table4"]}[Content],#"Appended Query" = bine({Source1,Source2,Source3,Source4})in#"Appended Query"******************VBA建立格式表(Convert Range To Table in all worksheets in one workbook)*************Sub CreatTableRenameAll() '#1 Creat Table and Rename as sheet for All sheets 'Dim wrksht As WorksheetDim objTable As ListObjectApplication.ScreenUpdating = FalseFor i = 2 To 25 '表2到表25,Excel窗口里的排序,不是VBE中顺序'or ActiveWorkbook.Worksheets.Count ' 或者,最大工作表数Set sh = ActiveWorkbook.Worksheets(i)If sh.Index > 0 Then 'Conditions for traversal 'For i = 1 To ActiveWorkbook.Worksheets.CountDebug.Print sh.IndexTName = sh.Activatesh.Range("A27:F39").Select '固定区域建立为表'or sh.range("A1").CurrentRegion.select '或者, A1 所在数据区域建立成表'ActiveCell.CurrentRegion.Select '或者,当前激活的单元格所在区域建立表'sh.ListObjects.Add(xlSrcRange, Selection, , xlYes).Name = "a" 'Creat Table,Rename Table as sheet name '另一种建表方式Set objTable = sh.ListObjects.Add(xlSrcRange, Selection, , xlYes) 'Creat Table = TNameobjTable.TableStyle = None '表格式为无格式可选TalbeStyleLight1 等等End IfNextApplication.ScreenUpdating = TureEnd Sub。
power query的数据合并方法

power query的数据合并方法在数据处理与分析领域,Power Query 是一款功能强大的工具。
它能够帮助用户进行数据清洗、转换和合并等操作。
本文将详细介绍Power Query 的数据合并方法,帮助您更好地掌握这一技能。
一、Power Query 简介Power Query 是Microsoft Excel 和Power BI 中的一款数据处理插件。
它可以帮助用户从各种数据源(如文本文件、Excel 表、数据库等)导入数据,并进行清洗、转换和合并等操作。
通过Power Query,我们可以轻松地实现数据的整合和分析。
二、数据合并方法1.同一工作簿内数据合并(1)选中需要合并的表格,点击“开始”选项卡下的“合并”按钮。
(2)在弹出的“合并”窗口中,选择“添加”或“添加文件”按钮,将需要合并的表格添加到列表中。
(3)设置合并条件,如匹配列、合并方式等。
(4)点击“确定”按钮,完成数据合并。
2.不同工作簿间数据合并(1)打开目标工作簿,点击“数据”选项卡下的“获取外部数据”按钮,选择“来自其他源”中的“Excel”。
(2)在弹出的“打开”窗口中,选择源工作簿,点击“导入”按钮。
(3)在“导航器”窗口中,选择需要合并的数据表,点击“合并”按钮。
(4)设置合并条件,如匹配列、合并方式等。
(5)点击“确定”按钮,完成数据合并。
3.多个数据源合并(1)打开目标工作簿,点击“数据”选项卡下的“获取外部数据”按钮,选择“来自其他源”中的相应数据源。
(2)在弹出的窗口中,导入需要合并的数据。
(3)重复步骤1-2,导入其他数据源。
(4)点击“数据”选项卡下的“合并”按钮,选择“合并查询”选项。
(5)在“合并查询”窗口中,选择需要合并的数据表,设置合并条件。
(6)点击“确定”按钮,完成数据合并。
三、注意事项1.在合并数据时,请确保数据源中的匹配列具有唯一性,避免重复数据。
2.根据实际需求,选择合适的合并方式(如左连接、右连接、内连接等)。
PowerQuery技巧之数据合并、拆分

本节重点:熟练使用Power Query中的合并以及拆分功能。
例子:下面是学生的考试成绩表,要求将其合并到一列中,用“/”分隔,没有考试成绩的不显示。
效果图:这里我们将用到PQ中的“合并”功能,具体思路是:将数据源分为三个表进行操作。
表1、原始数据源保持不变;表2、将分数用科目名称填充;表3、将分数用分隔符“/”填充;最后进行三表按照“姓名”进行合并,最后合并为一列。
具体实现:“原始表”不需要进行任何操作,直接处理“科目名”表。
直接选中四列科目列,进行逆透视列。
然后我们的目的是重复列名,选中“属性”列,点击“重复列”,删除我们不需要的“值”列。
随后选中“属性”列进行透视列,注意要选择“不要聚合”。
这样第二个表也整理完毕。
同样的方法处理“分隔符”表,先逆透视列,然后新增一列分隔符“/”,随后接着透视列,得到如下结果。
好了,三个表处理完毕,下面我们针对“原始表”进行两两合并。
然后除去“姓名”进行“扩展”。
同样的继续合并,另外一个表。
接着调整一下合并之前的位置,就可以进行“合并”操作啦。
这样就完成了“合并”的需求,加载到旁边我们做一下对比。
新增一个学生,看看是否会动态刷新?妥妥的有没有!下面我们对这个结果进行展开操作。
按分隔符进行拆分列。
接着进行逆透视列的操作。
接着拆分,此时不按分隔符拆分了,可以按照固定的字符数进行拆分。
删除不需要的列,进行透视列的操作。
相当妥当。
这个时候新增删除记录,也可以动态刷新,而且科目的顺序不需要一致,随心所欲即可。
转载自https:///zhongguomao/article/details/54311476。
PowerQuery技巧之多列数据组合

Power Query 中进行多列数据组合转换成(一) 把单个字段组合成一个列Table.ToColumns(源)(二) 把需要合并的样式单独组合Table.FromColumns(List.Range(单字段组合,0,1)&List.Range(单字段组合,4,3))解释:第一个List.Range目的是为了固定班级字段;第2个List.Range是为了提取第一组的数据。
然后和2个列表进行组合并转成Table格式。
同一样的操作,提取第二部分的数据。
Table.FromColumns(List.Range(单字段组合,0,1)&List.Range(单字段组合,4,3))(三) 组合表格bine将之前组合的表格进行合并。
(四) 重命名字段名(五) 创建批量处理的函数之前我们了解到了如何把2列数据进行合并的基本操作,也就是把多个字段进行组合并转成表。
那如果这类的数据很多,如何批量转换呢?我们需要把转换的这一部分做成循环的函数即可。
bine(List.Transform({1..x},each Table.FromColumns(List.Range(单字段组合,0,1)&List.Range(单字段组合,(_*3-3)+1,3))))这个函数是在当前查询功能中进行的书写,但是实际我们在平时想要调用的时候,还有很多需要进一步的进行修改及优化。
1. 生成一个表格参数变量生成这个参数变量是为了我们之后可以在直接调用来处理同类表格。
我们了解到在代码中的单字段组合实际上是个已经经过Table.ToColumns处理过的一个列表嵌套列表格式。
所以我们在优化代码的时候可以把这一步处理的过程直接作为自定义函数的部分流程。
同时我们在这个里面直接把函数的参数及类型给固定住。
let多列组合=(需要操作的表 as table, x as number) as table=>bine(List.Transform({1..x},each Table.FromColumns(List.Range( Table.ToColumns(需要操作的表),0,1)&List.Range( Table.ToColumns(需要操作的表),(_*3-3)+1,3))))in多列组合2. 生成固定列变量添加固定列终点变量,可以用于固定列的选择。
利用Power Query合并多行数据到一个单元格

页 面
边 距 的 设 置 甚 至每 页 多 少行 每行 多少 字都 要 提 前 ,
设 置好 这样后期 排版 时效率会 大 幅度 提升。 _ ,
打 印
#
tW ? J
-
随
l '
=i
\
利用 P owe r(J ue iy
合并 多 行数据 到一 个单元 格
?文 /图 王 志 军
:
,
我们 最 好 先 做 好 页 面 参 数 的 设 置 特 别 是 一 些 比 较 ,
大的文档 ,
如毕业 论文、
标书 、
说明书 等,
里 面通常 会
栏 编 辑 张薇 目
:
@ s of tw ar e d n z s. co m
包含 图 片 、
表格 、
公 式等 ,
定 一 要 图
选 项 卡
,
勾 选 “ 编 辑 栏 ” 框 复 选 。
完成上述 步骤之后
返回
开 始 “
”
选 项卡
单 击
,
,
“ 关 闭 并上 载 ”
按钮 ,
返 界 面 回 E x c e l
,
单击 “合 并 内
容” 列 , 设 置 为 自 动换 行 , 再适 当 调 整 字 体 和 字 号 就
, 固 圖 回國 國
文枝网格
上 D : (
^ 8^ 向
2. 5
2* 5 ? ^
丨
〇 ?^
闕
2 . 5
私 2. 5
v
? P 9
p
多页 M (
) :
书
娜 页数 中
U Q :
powerquery 笛卡尔积 两列数据合并

PowerQuery是微软Excel中的一种数据处理工具,可以通过它来对数据进行清洗、转换和合并等操作。
在使用PowerQuery进行数据合并时,有时会遇到需要对两列数据进行笛卡尔积操作的情况。
本文将介绍如何使用PowerQuery进行笛卡尔积操作,并将两列数据合并的方法。
1. 了解笛卡尔积笛卡尔积是数学中的一种基础概念,指的是两个集合中的每个元素都与另一个集合中的每个元素组合在一起,从而得到所有可能的组合。
在数据处理中,笛卡尔积可以用来将两个数据集合进行全排列组合,从而扩充数据量。
2. 准备数据我们需要准备两个数据列,可以是Excel表格中的两列数据,也可以是PowerQuery中的两个数据源。
假设我们有一个表格,第一列是产品名称,第二列是颜色,我们需要将这两列数据进行笛卡尔积操作,得到所有可能的产品名称和颜色的组合。
3. 打开PowerQuery在Excel中,选择需要进行数据合并的表格,然后点击“数据”选项卡中的“从表格范围创建查询”按钮,即可打开PowerQuery界面。
如果数据源不是表格,也可以通过其他方式打开PowerQuery,确保两个数据源在同一个PowerQuery界面中。
4. 合并数据在PowerQuery中,我们可以使用“合并查询”功能来进行笛卡尔积操作。
首先选择第一个数据列,然后点击“合并查询”中的“查询合并”按钮,在弹出的对话框中选择第二个数据列,然后设置合并类型为“笛卡尔积”。
5. 设置合并选项在设置合并选项时,需要选择用于合并的列,也可以设置合并后的列名、数据类型等信息。
确认设置后,点击“确定”按钮,即可完成笛卡尔积操作。
6. 查看合并结果完成合并操作后,可以在PowerQuery中查看合并结果。
将合并后的数据加载到Excel中,即可查看所有可能的产品名称和颜色的组合,这样我们就完成了对两列数据的笛卡尔积操作,并将其合并成一个新的数据集。
通过上述步骤,我们可以使用PowerQuery对两列数据进行笛卡尔积操作,从而得到所有可能的组合,并将其合并成一个新的数据集。