如何在 Power Query 中正确展开嵌套表

内容

假设我们有一个包含多个智能表的 Excel 文件:

如何在 Power Query 中正确展开嵌套表

如果您使用以下命令以标准方式将这些表加载到 Power Query 中 数据 - 获取数据 - 从文件 - 从书 (数据 - 获取数据 - 从文件 - 从工作簿),然后我们得到这样的东西:

如何在 Power Query 中正确展开嵌套表

我认为,许多 Power Query 用户都熟悉这张图片。 在组合查询(a la VLOOKUP)、分组(命令 通过...分组 标签 转型),从给定文件夹中导入所有文件等。

在这种情况下,下一个合乎逻辑的步骤通常是一次展开所有嵌套表——使用列标题中的双箭头按钮 时间:

如何在 Power Query 中正确展开嵌套表

结果,我们将所有表中的所有行组合成一个整体。 一切都很好,简单明了。 

现在假设在源表中添加了一个新列(折扣)和/或删除了一个现有的列(城市):

如何在 Power Query 中正确展开嵌套表

那么我们更新后的请求会返回一张不太漂亮的图——折扣没有出现,城市栏变空了,但并没有消失:

如何在 Power Query 中正确展开嵌套表

很容易看出原因 - 在公式栏中,您可以清楚地看到扩展列的名称在函数参数中是硬编码的 表.展开表列 作为大括号中的列表。

解决这个问题很容易。 首先,让我们使用函数从任何(例如,第一个)表的标题中获取列名 表.列名. 它看起来像:

如何在 Power Query 中正确展开嵌套表

这里:

  • #“其他列已删除” – 上一步的名称,我们从中获取数据
  • 0、XNUMX、XNUMX、XNUMX {} – 我们从中提取表头的表的编号(从零开始计数,即 0 是第一个表)
  • [数据] – 上一步中的列名,展开的表所在的位置

剩下的就是将公式栏中得到的构造代入函数中 表.展开表列 在扩展表格而不是硬编码列表的步骤中。 最后应该是这样的:

如何在 Power Query 中正确展开嵌套表

就这样。 并且当源数据发生变化时,扩展嵌套表也不会再出现问题。

  • 在 Power Query 中从一张工作表构建多格式表
  • 从多个 Excel 文件构建具有不同标题的表格
  • 将书中所有工作表中的数据收集到一个表中

 

发表评论