场景还原
在 Power Query 中合并多个结构相同的工作表时,你是否遇到过这样的问题?每个表的前几行是注释或空行,真正的列名藏在第N行之后。如果手动逐个表格“提升标题”,不仅效率低下,还容易出错。
比如某公司每天导出的销售数据,前4行是公司Logo和填报人信息,第5行开始才是真正的列名(日期、产品、销量)。我们需要批量跳过前4行,将第5行设为标题,再合并所有表格。
每个表都是这样子的
一行代码搞定全部表
= Table.TransformColumns(
#"展开的“自定义”",
{"Data", each Table.PromoteHeaders(Table.Skip(_, 4))}
)
代码讲解
Table.TransformColumns
作用:
对表格中的指定列(或列集合)进行批量转换,保持其他列不变。相当于便利列表中的每一项,然后逐个进行操作
-
用于对表中的指定列进行转换。第一个参数是输入表(
#"展开的“自定义”"
),第二个参数指定要转换的列及转换逻辑。 -
目标列
"Data"
被转换的列名为“Data”,该列的每个元素都是一个嵌套的子表(Table)。 -
转换逻辑
each Table.PromoteHeaders(Table.Skip(_, 4))
-
Table.Skip(_, 4)
:跳过子表的前4行。假设子表的前4行是元数据或无用的信息。 -
Table.PromoteHeaders()
:将剩余子表的第一行提升为列标题,后续行作为数据行。
-
应用场景
- 处理不规范数据源:当子表的前几行包含无关信息(如注释、说明、空行)时,跳过这些行。
- 动态提取标题:当子表的标题行不固定在第1行,而是位于第5行(或类似位置)时,通过跳过行并提升标题,实现数据标准化。