【问题标题】:Excel: Dynamically add tables to Power Query merge sourcesExcel:动态地将表添加到 Power Query 合并源
【发布时间】:2018-06-02 19:52:11
【问题描述】:

我不确定这是否可能,但这是交易:

我在包含库存清单的单个工作表中有几个表格,我还有另一个工作表,其中有一个表格,该表格根据某些标准合并它们。

问题是,如果我创建一个新的库存类别,我会创建一个带有自己的库存列表的新选项卡,但是为了将该库存包含在合并表中,我必须从新表创建一个新连接,然后进入合并表的 Power Query 编辑器并将新表添加到 Source = Table.Combine({table1, table2, table3, table4}) 行。

所以基本上我想知道是否可以对Source 行进行某种编辑,如果我们添加/减去工作表,它会自动更新查询源。即使我可以在那里使用一个范围,我们也可以在每次添加工作表时将工作表名称添加到列表中,这样就可以了。基本上任何比在 Power Query 中更改代码更容易的事情。如果唯一的方法是以某种方式创建一个 VBA 宏和一个更新查询的按钮,那也很好,但是您知道我可以查看的任何资源将不胜感激,因为我只有很少的 VBA 经验。

我能找到的最接近的消息来源是:Updating Power Query Source,但这个解决方案听起来有点老套,我想知道是否有更干净的东西。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    创建一个新的空白查询并将以下内容粘贴到其中:

    let
        Source = Excel.CurrentWorkbook()
    in
        Source
    

    这将显示当前工作簿中所有表的列表。您现在可以过滤要合并的表。如果您对表使用命名约定,则可以轻松地为以特定文本开头的表创建过滤器,例如“inv”。

    然后展开表并删除具有表名的列。这将 M 带到

    let
        Source = Excel.CurrentWorkbook(),
        #"Filtered Rows" = Table.SelectRows(Source, each Text.StartsWith([Name], "inv")),
        #"Expanded Content" = Table.ExpandTableColumn(#"Filtered Rows", "Content", {"data1", "data2"}, {"data1", "data2"})
    in
        #"Expanded Content"
    

    添加更多遵循该命名约定的工作表和更多表,您只需刷新查询即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多