如何在 Excel 中合并多个具有不同列名和列顺序的 CSV 文件?

问题描述 投票:0回答:2

我有 350 多个 CSV 文件需要合并到一个聚合文件中。 使用 Power Query for Excel,我能够在几分钟内轻松合并所有文件。但是,经过检查,并非所有文件都遵循相同的列顺序或名称。例如,某些文件的格式为:

first, last, address, city, state, username

但是其他一些文件也经过了:

address1, address2, city, state, last_name, first_name, age

使用 Power Query、Excel、VBA 或其他工具 - 有没有办法有效合并具有不同列名和列顺序的多个 CSV 文件?我尝试在线搜索,但没有一个解决方案与我正在寻找的内容相关(示例)。

上面示例的最终结果应如下所示:

username, last_name, first_name, age, address1, address2, city, state

一张纸中不存在的任何额外列都可以为空白(或

null
),最终确定的列顺序并不重要,因为稍后可以重新排列。

excel vba csv powerquery m
2个回答
3
投票

此相关帖子类似,Table.Combine函数应该可以解决问题,假设您有标题来匹配列。

通过从文件夹加载加载 CSV 文件,将 CSV 转换为表格格式并提升标题,然后与

Table.Combine
结合。

let
    Source = Folder.Files("C:\Path\To\Folder\With\CSVs"),
    #"Added Custom" = Table.AddColumn(Source, "CSV", each Table.PromoteHeaders(Csv.Document([Content]))),
    #"Combine CSVs" = Table.Combine(#"Added Custom"[CSV])
in
    #"Combine CSVs"

0
投票

我有一个充满 csv 文件的文件夹。这些列的顺序不同,并且我想保留的一些 CSV 中还有其他列。我已按照上面的说明进行操作,但出现以下错误。我也在 Power BI 中使用 Power Query 来实现此目的。我在查询中没有指定列数或列名称,因此我对为什么它需要一定数量的列感到困惑。任何帮助将不胜感激!

DataFormat.Error:结果中的列数超出预期。DetailsReason = DataFormat.Error 计数 = 1

这是我的询问:

'''''''''' 让 来源 = SharePoint.Files("https://soco365.sharepoint.com/sites/ITSMOReporting/", [ApiVersion = 15]), #"筛选行" = Table.SelectRows(Source, every Text.Contains([Name], "SOUTHERNCO_AllADUsers")), #"添加自定义" = Table.AddColumn(#"筛选行", "CSV", 每个 Table.PromoteHeaders(Csv.Document([Content]))), #"合并所有表格所有列" = Table.Combine(#"添加自定义"[CSV]) 在 #“合并所有表的所有列” ''''''''''

© www.soinside.com 2019 - 2024. All rights reserved.