Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel查询编辑器中组合具有不同列数的CSV文件文件夹_Excel_Csv_Powerquery_Excel 2016 - Fatal编程技术网

在Excel查询编辑器中组合具有不同列数的CSV文件文件夹

在Excel查询编辑器中组合具有不同列数的CSV文件文件夹,excel,csv,powerquery,excel-2016,Excel,Csv,Powerquery,Excel 2016,我有一个包含许多CSV文件的文件夹,其中前八列具有相同的标题,但前八列之后的列数不同。我正在尝试使用Excel 2016中的查询和连接来完成此操作 下面是一个CSV文件格式的示例,假设A-H中有字符串值: ---------------------------------------------------------------------------------------------------------------- | A | B | C | D | E

我有一个包含许多CSV文件的文件夹,其中前八列具有相同的标题,但前八列之后的列数不同。我正在尝试使用Excel 2016中的查询和连接来完成此操作

下面是一个CSV文件格式的示例,假设A-H中有字符串值:

----------------------------------------------------------------------------------------------------------------
|     A     |  B  |  C  |  D  |  E  |  F  |  G  |  H  | Company 1 | Value (1) | Company 2 | Value (2) | etc... |  
----------------------------------------------------------------------------------------------------------------  
| Product 1 |     |     |     |     |     |     |     |    .05    |   25.00   |    .08    |   14.00   |        |  
----------------------------------------------------------------------------------------------------------------  
| Product 2 |     |     |     |     |     |     |     |    .16    |   43.00   |    .06    |   18.00   |        |  
----------------------------------------------------------------------------------------------------------------  
同样:A-H列对于每个CSV文件都是相同的,但是每个文件都有不同数量的公司/值。每个文件的公司名称都不同

我已经为一个CSV文件完成了必要的步骤,并希望有某种方法可以将其用作其他CSV文件的模板

以下是我需要在Excel的查询编辑器中执行的步骤:

删除一些A-H列这些标题匹配所有文件,应该不难 删除所有值列-每个CSV文件中的值列数不同 取消Pivot所有公司列现在都是匹配列A-H后的每一列,因为值列在上一步中被删除 将包含所有公司名称的列重命名为company 将以前每个公司下的所有值的列重命名为成本 以下是“高级查询编辑器”中应用的步骤:

#"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"A", type text}, {"B", type text}, {"C", type text}, {"D", type text}, {"E", type number}, {"F", type text}, {"G", Currency.Type}, {"H", Currency.Type}, {"Company 1", type text}, {"Value (1)", Currency.Type}, {"Company 2", type text}, {"Value (2)", Currency.Type}, {"Company 3", type text}, {"Value (3)", Currency.Type}, {"Company 4", type text}, {"Value (4)", Currency.Type}, {"Company 5", type text}, {"Value (5)", Currency.Type}, {"Company 6, type text}, {"Value (6)", Currency.Type}, {"Company 7", type text}, {"Value (7)", Currency.Type}, {"Company 8", type text}, {"Value (8)", Currency.Type}, {"Company 9", type text}, {"Value (9)", Currency.Type}}),
#"Removed Other Columns" = Table.SelectColumns(#"Changed Type",{"A", "C", "D", "E", "Company 1", "Company 2", "Company 3", "Company 4", "Company 5", "Company 6", "Company 7", "Company 8", "Company 9"}),
#"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Removed Other Columns", {"A", "C", "D", "E"}, "Attribute", "Value")
是否有任何方法导入CSV文件文件夹,并将上述步骤应用于每个文件夹,以便只需一次查询所有CSV文件?下面是我希望它看起来如何的简要示例

----------------------------------------------------
|     A     |  C  |  D  |  E  |  Company  |  Cost  |  
----------------------------------------------------
| Product 1 |     |     |     | Company 1 |  .05   |
----------------------------------------------------
| Product 1 |     |     |     | Company 2 |  .08   |
----------------------------------------------------
| Product 2 |     |     |     | Company 1 |  .16   |
----------------------------------------------------
| Product 2 |     |     |     | Company 2 |  .06   |
----------------------------------------------------

我相信是这样。这似乎奏效了

首先选择“获取数据”或“新建源”>“文件”>“文件夹”,然后浏览到包含csv文件的文件夹,选择该文件夹并单击“确定”。然后再次单击“确定”

您将看到如下内容

单击编辑按钮

在内容列上单击鼠标右键,然后删除其他列。你会看到像这样的东西

通过单击右上角的按钮展开“内容”列,然后在出现的对话框中单击“确定”,如下所示

在屏幕左侧的“查询”下,您将看到如下内容:

我强调的问题是您希望在哪里工作。请注意,它有一个表图标,以Transform Sample File开始。点击它

在屏幕右侧的应用步骤下,单击源

在公式栏中,您应该看到如下内容:=Csv.DocumentSample File Parameter1,[Delimiter=,Columns=12,Encoding=1252,QuoteStyle=QuoteStyle.None]。删除部分,列=12,从C到逗号的所有内容,它很可能与12的数字不同

然后从表中删除要删除的列

单击变换>将第一个标题行用作标题下拉箭头>将标题用作第一行

单击变换>转置以翻转表格

选择Column1下拉箭头>文本过滤器>不以>开头并键入值,然后单击确定

单击“变换>转置”将表格翻转回其原始方向

单击变换>将第一行用作标题

选择除公司列以外的所有列,然后单击“取消打印列”下拉箭头>“取消打印其他列”。不要直接选择和透视公司列。正如我所说的,间接地做这件事应该可以从不同的文件中捕获不同数量的公司列

在屏幕右侧的应用步骤下,删除每个更改类型的步骤。如果您不这样做,它们可能会导致您的查询阻塞

现在回到这个查询,它将是您最初的主查询。当然,你的名字是另外一个名字,但是你可以通过它的位置来知道它。点击它

您可能会看到这样的错误

删除屏幕右侧应用步骤中的任何更改类型步骤

你应该看看这样的东西


这工作做得很好!我发现了一些随机必要列的其他问题,我没有在最初的文章中提到这些问题,但我只是将这些问题合并到筛选行的步骤中。您使我免于单独执行850多个查询的转换。