为啥我的excel的Power Query没有按行分隔分选项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我的excel的Power Query没有按行分隔分选项相关的知识,希望对你有一定的参考价值。

如图呢,请问是什么原因呢

之前遇到过你这个问题。办公室安装的2016版本,家里面安装的是2013版本,2013版本的上面有按行分隔;我感觉是2016有很多版本,部分版本不支持按照行分隔。只能重新换个2016其他版本的用了。

试了一下EXCEL2019,可以使用按行分隔分选项功能。

参考技术A 可能安装包不完善,没有这个功能,建议安装2016版。追问

我的就是2016版

Excel 表之间的组合的 Power Query 是啥?

【中文标题】Excel 表之间的组合的 Power Query 是啥?【英文标题】:What Power Query for combinations between Excel tables?Excel 表之间的组合的 Power Query 是什么? 【发布时间】:2021-04-26 07:23:47 【问题描述】:

虽然它在 SQL 中非常简单,但我无法获得在 Excel 中获取关联表之间的所有组合所需的 Power Query M 代码。这是我的(虚构的)表格和数据:

颜色:

ID Name
#FF0000 Red
#00FF00 Green
#0000FF Blue

对象:

ID Name
Obj001 Sofa
Obj002 Chair

油漆:

ID Name
Pnt001 Myrtle
Pnt002 Sunset

ColorInObject(第一个关联):

ObjectID ColorID
Obj001 #FF0000
Obj001 #00FF00
Obj002 #FF0000
Obj002 #0000FF

ColorInPaint(第二个关联):

PaintID ColorID
Pnt001 #FF0000
Pnt001 #0000FF
Pnt002 #00FF00
Pnt002 #0000FF

使用以下简单的 SQL 查询:

SELECT Object.Name, Paint.Name, Color.Name
FROM Object, Paint, Color, ColorInObject, ColorInPaint
WHERE ColorInObject.ColorID = Color.ID AND ColorInObject.ObjectID = Object.ID
AND ColorInPaint.ColorID = Color.ID AND ColorInPaint.PaintID = Paint.ID
AND ColorInObject.ColorID = ColorInPaint.ColorID

我通过颜色得到对象和绘画之间所有可能组合的以下预期结果:

Object.Name Paint.Name Color.Name
Sofa Myrtle Red
Chair Myrtle Red
Sofa Sunset Green
Chair Myrtle Blue
Chair Sunset Blue

如何使用 Power Query 在 Excel 中获得相同的结果?所需的 Power Query M 代码是什么?

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

通常,Power Query 的工作原理是一次仅连接两个表,因此您需要采取一系列步骤。

仅使用 GUI 合并和扩展列,您可以使用 M 代码获得最终结果,如下所示:

let
    Source = ColorInObject,
    #"Merged Queries" = Table.NestedJoin(Source, "ColorID", ColorInPaint, "ColorID", "ColorInPaint", JoinKind.LeftOuter),
    #"Expanded ColorInPaint" = Table.ExpandTableColumn(#"Merged Queries", "ColorInPaint", "PaintID", "PaintID"),
    #"Merged Queries1" = Table.NestedJoin(#"Expanded ColorInPaint", "ObjectID", Object, "ID", "Object", JoinKind.LeftOuter),
    #"Expanded Object" = Table.ExpandTableColumn(#"Merged Queries1", "Object", "Name", "Object.Name"),
    #"Merged Queries2" = Table.NestedJoin(#"Expanded Object", "ColorID", Color, "ID", "Color", JoinKind.LeftOuter),
    #"Expanded Color" = Table.ExpandTableColumn(#"Merged Queries2", "Color", "Name", "Color.Name"),
    #"Merged Queries3" = Table.NestedJoin(#"Expanded Color", "PaintID", Paint, "ID", "Paint", JoinKind.LeftOuter),
    #"Expanded Paint" = Table.ExpandTableColumn(#"Merged Queries3", "Paint", "Name", "Paint.Name"),
    #"Removed Other Columns" = Table.SelectColumns(#"Expanded Paint","Object.Name", "Color.Name", "Paint.Name")
in
    #"Removed Other Columns"

如果你手动修改 M,你可以减少一些冗长:

let
    JoinTables =
        Table.NestedJoin(
            Table.NestedJoin(
                Table.NestedJoin(
                    Table.Join(
                        ColorInPaint, "ColorID",
                        ColorInObject, "ColorID"
                    ), "ObjectID",
                    Object, "ID", "Object"
                ), "PaintID",
                Paint, "ID", "Paint"
            ), "ColorID",
            Color, "ID", "Color"
        ),
    Expand =
        Table.ExpandTableColumn(
            Table.ExpandTableColumn(
                Table.ExpandTableColumn(
                    JoinTables, "Object", "Name", "Object.Name"
                ), "Paint", "Name", "Paint.Name"
            ), "Color", "Name", "Color.Name"
        )
in
    Table.SelectColumns(Expand,"Object.Name", "Paint.Name", "Color.Name")

【讨论】:

谢谢亚历克西斯。这看起来不错,但我收到以下错误:“查询中发生错误。 Expression.Error:无法识别名称“ColorInPaint”。确保拼写正确。我是 Power Query 的新手,所以我可能在基本层面上遗漏了一些东西。表名称是我的 Excel 工作簿中的名称,Power Query 可能无法识别它们吗?如果是这样,我应该做哪些额外的操作/代码?再次感谢您。 您需要确保已将您提到的所有表加载到查询编辑器中,否则它不知道您指的是什么。 我终于自己找到了。奇迹般有效。非常感谢!【参考方案2】:

听起来你想要两个表中所有行的组合

通过突出显示范围并使用数据将第一个表加载到 powerquery .. 从表/范围 [x] 我的表有标题

添加列..自定义列...列名自定义和公式=1

文件关闭并加载

通过突出显示范围并使用数据将第二个表加载到 powerquery .. From Table/Range [x] 我的表有标题

添加列..自定义列...列名自定义和公式=1

Home .. Merge Queries ...点击顶部和底部的自定义并将连接类型更改为full outer。点击确定

单击新列顶部的 >>

【讨论】:

以上是关于为啥我的excel的Power Query没有按行分隔分选项的主要内容,如果未能解决你的问题,请参考以下文章

使用 Power Query 从 Excel 缩进中提取层次结构

Excel 表之间的组合的 Power Query 是啥?

Power Query Editor (Excel) - 错误处理 API 提要中的无数据

Power Query Excel 中的覆盖/锁定值

Excel Power Query 拆分表格顶部/底部 50%

Excel 2016 Power Query无法加载到电子表格