我有几张表,每张都包含一张表中的库存清单。我想创建一个新工作表,它结合了其中一个列中包含特定值的所有其他工作表中的所有行。理想情况下,我希望新工作表仅包含选定的列(这些列是所有源表中存在的列)。
例如,工作表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。但是,如果那是我可以处理的明星。
答案 0 :(得分:0)
如果您使用excel 2013及更高版本,PowerQuery / Get和Transform是一种可行的方法。 将查询指向excel文件将附加包含的所有数据,请检查以下内容:
答案 1 :(得分:0)
您可以使用powerquery执行此操作,并使用/不使用基于单元格的PUBLISHER参数进行过滤。这是2016年Get& amp; amp; amp; amp; amp; amp;转换数据选项卡; 2013年Powerquery选项卡的免费加载项。
抱歉图片太大了。
如果您要使用基于参数的查询,从单元格中选取发布者名称,则在表单的单元格A1中创建名为filterValue
的命名范围。您只需选择A1并在左上角的Name框中输入filterValue即可。
Sheet A
选择表格范围内的单元格,然后转到数据(或Powerquery标签)>从表
确保我的表格已检查标题
关闭并加载>仅连接(在此实例中无需选择添加到数据模型)>负载
对Sheet B
中的表2重复步骤1到3。然后选择Sheet C
。
通过数据>组合查询1和2;新查询>结合查询>附加
点击主页>高级编辑器并修改脚本的顶部,如下所示,然后保存:
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
进行过滤。
使用选择列AUTHOR
和PAGES
>删除不需要的列右键单击>删除列
主页>分组依据>高级然后使用下面的设置>点击确定
添加列>自定义列并将其标题为TOTAL COST
添加公式[COST]*[QTY]
选择列并拖动以根据需要重新排列。也许通过双击列标题将Cost列重命名为Unit Column。
关闭并加载到Sheet C
(现有工作表)
观察结果。注意我在你的奖金查询中添加了,因此表B的结尾是:
3 The Blah Book blank cell Kjos 14
<强>结果:强>
<强>参考:强>
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"