|
|
发表于 2025-12-4 21:56
来自手机
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
let
Source = Folder.Files("你的文件夹路径"),
// 读取所有文件但不指定列数
ProcessEachFile = Table.AddColumn(Source, "Data", each
Csv.Document(
[Content],
[Delimiter=",", Encoding=TextEncoding.Utf8, QuoteStyle=QuoteStyle.Csv]
)
),
// 找到最大列数
#"Added MaxColumns" = Table.AddColumn(
ProcessEachFile,
"ColumnCount",
each Table.ColumnCount([Data])
),
maxColumns = List.Max(#"Added MaxColumns"[ColumnCount]),
// 为所有表格添加缺失的列(如果需要)
StandardizedData = Table.AddColumn(
#"Added MaxColumns",
"StandardData",
each
let
current = [Data],
currentCols = Table.ColumnNames(current),
missingCols = maxColumns - List.Count(currentCols),
// 如果有缺失列,添加空列
result = if missingCols > 0 then
let
newCols = List.Transform(
{1..missingCols},
each "Column" & Text.From(Table.ColumnCount(current) + _)
),
addColumns = List.Accumulate(
newCols,
current,
(state, colName) => Table.AddColumn(state, colName, each null)
)
in
addColumns
else
current
in
result
),
// 提升标题(如果CSV有标题行)
PromotedData = Table.AddColumn(
StandardizedData,
"PromotedData",
each
let
data = [StandardData],
promoted = Table.PromoteHeaders(data, [PromoteAllScalars=true])
in
promoted
),
// 展开数据
#"Expanded PromotedData" = Table.ExpandTableColumn(
PromotedData,
"PromotedData",
List.Distinct(List.Transform({1..maxColumns}, each "Column" & Text.From(_)))
),
result = #"Removed Columns" // 继续清理数据
in
result |
|