Excel:合并包含值的多个工作表中的行

时间:2018-05-20 00:56:56

标签: excel

我有几张表,每张都包含一张表中的库存清单。我想创建一个新工作表,它结合了其中一个列中包含特定值的所有其他工作表中的所有行。理想情况下,我希望新工作表仅包含选定的列(这些列是所有源表中存在的列)。

例如,工作表A 包含此表:

BufferedReader

工作表B 包含此表:

QTY  NAME              AUTHOR    PUBLISHER    COST
 1   The Blah Book     John      Kjos         14.00
 5   Another Book      Kate      Lewis        8.00
 3   Yet Another Book  Eric      Kjos         4.00

我正在寻找一种方法来创建工作表C ,例如,所有Kjos项目都包含在所有源工作表中的选定列中:

QTY  NAME              PAGES     PUBLISHER    COST
 4   The Blah Document 15        Alfred       9.00
 6   Another Document  18        Kjos         15.00
 9   Yet Another Doc   12        Lewis        3.00

我尝试了一个数据透视表,它允许我组合多个数据集,但似乎不允许我只收集包含搜索词的行,并且数据透视表不是我正在寻找的

我认为我基本上正在寻找类似于Google表格中的QTY NAME PUBLISHER COST 1 The Blah Book Kjos 14.00 3 Yet Another Book Kjos 4.00 6 Another Document Kjos 15.00 公式的公式...将多个来源混合在一起成为一个表格。

感谢您的帮助!

奖金:

更理想的是,我想要重复的条目来总结数量,所以如果表B包含3个The Blah Book,那么Sheet C将合并两个和Blah Book的列表4。但是,如果那是我可以处理的明星。

2 个答案:

答案 0 :(得分:0)

如果您使用excel 2013及更高版本,PowerQuery / Get和Transform是一种可行的方法。 将查询指向excel文件将附加包含的所有数据,请检查以下内容:

append queries

答案 1 :(得分:0)

您可以使用powerquery执行此操作,并使用/不使用基于单元格的PUBLISHER参数进行过滤。这是2016年Get& amp; amp; amp; amp; amp; amp;转换数据选项卡; 2013年Powerquery选项卡的免费加载项。

抱歉图片太大了。

第1步

如果您要使用基于参数的查询,从单元格中选取发布者名称,则在表单的单元格A1中创建名为filterValue的命名范围。您只需选择A1并在左上角的Name框中输入filterValue即可。

第2步

Sheet A选择表格范围内的单元格,然后转到数据(或Powerquery标签)>从表

Data from table

第3步

确保我的表格已检查标题

Headers

第4步

关闭并加载>仅连接(在此实例中无需选择添加到数据模型)>负载

Close and load

Load to

第5步

Sheet B中的表2重复步骤1到3。然后选择Sheet C

第6步

通过数据>组合查询1和2;新查询>结合查询>附加

Append queries

第7步

点击主页>高级编辑器并修改脚本的顶部,如下所示,然后保存:

filterParameter = Excel.CurrentWorkbook(){[Name="filterValue"]}[Content],
filterParameterValue = filterParameter {0} [Column1],
Source = Table.Combine({Table1, Table2}),
#"Filtered Rows" = Table.SelectRows(Source, each ([PUBLISHER] =  filterParameterValue )),

这就是说,在步骤1的命名区域中对值PUBLISHER进行过滤。

第8步

使用选择列AUTHORPAGES>删除不需要的列右键单击>删除列

Remove columns

第9步

主页>分组依据>高级然后使用下面的设置>点击确定

Settings

第10步

添加列>自定义列并将其标题为TOTAL COST

添加公式[COST]*[QTY]

Total Cost

步骤11

选择列并拖动以根据需要重新排列。也许通过双击列标题将Cost列重命名为Unit Column。

Column re-order and re-name

第12步

关闭并加载到Sheet C(现有工作表)

Close and load to sheet

步骤13

观察结果。注意我在你的奖金查询中添加了,因此表B的结尾是:

3   The Blah Book   blank cell  Kjos    14

<强>结果:

Result

<强>参考:

  1. Dynamic parameter values in queries
  2. CombinedTables的完整M代码

    let
        filterParameter = Excel.CurrentWorkbook(){[Name="filterValue"]}[Content],
        filterParameterValue = filterParameter {0} [Column1],
        Source = Table.Combine({Table1, Table2}),
        #"Filtered Rows" = Table.SelectRows(Source, each ([PUBLISHER] =  filterParameterValue )),
        #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"AUTHOR", "PAGES"}),
        #"Grouped Rows" = Table.Group(#"Removed Columns", {"NAME", "PUBLISHER", "COST"}, {{"QTY", each List.Sum([QTY]), type number}}),
        #"Added Custom" = Table.AddColumn(#"Grouped Rows", "TOTAL COST", each [COST]*[QTY]),
        #"Reordered Columns" = Table.ReorderColumns(#"Added Custom",{"QTY", "NAME", "PUBLISHER", "COST", "TOTAL COST"}),
        #"Renamed Columns" = Table.RenameColumns(#"Reordered Columns",{{"COST", "UNIT COST"}})
    in
        #"Renamed Columns"