You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query拼接列名向上填充值时遇表达式错误求助

问题描述

已通过M代码将数据中的0值替换为null,需将所有非null值移至前两行(最终目标是集中到第一行并移除null)。尝试用Table.FillUp实现向上填充时,生成列名列表的代码报错,提示找不到对应列。现有M代码如下:

Custom1 = Table.ColumnNames(#"Transposed Table2"),
Custom2 = List.Transform(Custom1, each {_, each if _ = 0 then null else _}),
Custom3 = Table.TransformColumns(#"Transposed Table2",Custom2),
Custom4 = """"&Text.Combine(Table.ColumnNames(Custom3),""", """"&"""",
Custom5 = Table.FillUp(Custom3,{Custom4})

效果示例:
数据整理前后对比

解决方案

错误分析

Custom4的写法完全错误:你把列名拼接成了带引号的字符串(类似"列1", "列2"),但Table.FillUp的第二个参数要求传入列名的列表,而非格式化后的字符串。

修正后的填充代码

直接用Table.ColumnNames获取的原始列名列表传入Table.FillUp即可:

Custom1 = Table.ColumnNames(#"Transposed Table2"),
Custom2 = List.Transform(Custom1, each {_, each if _ = 0 then null else _}),
Custom3 = Table.TransformColumns(#"Transposed Table2", Custom2),
// 直接传入列名列表,无需额外拼接
Custom5 = Table.FillUp(Custom3, Custom1)

实现“所有值移至第一行并移除null”

如果要完成最终目标(将所有非null值集中到第一行,清理null列),可在填充步骤后追加以下代码:

// 提取第一行的非null值
FirstRowClean = List.RemoveNulls(Table.First(Custom5)),
// 生成新表,自动命名列
FinalTable = Table.FromRows({FirstRowClean}, List.Transform({1..List.Count(FirstRowClean)}, each "列" & Text.From(_)))

内容的提问来源于stack exchange,提问作者Sam R.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:49:59