Excel:将表动态添加到Power Query合并源

时间:2018-06-02 19:52:11

标签: excel vba excel-vba

我不确定这是否可行,但这是合约:

我在包含广告资源列表的单个表格中有几张表格,而且我还有另一张表格,其中包含根据特定条件合并它们的表格。

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

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

我能找到的最接近的资料来源是:Updating Power Query Source,但解决方案听起来有些狡猾,我想知道是否有更清洁的东西。

1 个答案:

答案 0 :(得分:3)

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

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"

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