Power Query中提取第5行指定列范围值的方法
解决方法
方法1:按列索引范围提取(基于原始列顺序)
Power Query的列索引从0开始,第12列对应索引11,第20列对应索引19。我们可以先锁定第5行的记录,再筛选出指定列范围内的字段,最后提取目标值(假设该范围内只有一个有效非空值):
let // 获取第5行的记录(索引从0计数,所以是{4}) TargetRow = #"Added Custom"{4}, // 获取所有列名列表 AllColumns = Table.ColumnNames(#"Added Custom"), // 截取第12到20列的列名(从索引11开始取9个元素) TargetColumns = List.Range(AllColumns, 11, 9), // 提取目标行中对应列的值,过滤空值后取第一个有效项 TargetValue = List.RemoveNulls(Record.ToList(Record.SelectFields(TargetRow, TargetColumns))){0} in TargetValue
方法2:按列名规则筛选(若列名有规律)
如果第12到20列的列名是Column12到Column20这类固定格式,可以直接生成列名列表来匹配:
let TargetRow = #"Added Custom"{4}, // 生成Column12到Column20的列名列表 TargetColumns = List.Transform({12..20}, each "Column" & Text.From(_)), // 提取对应值并取第一个非空有效项 TargetValue = List.RemoveNulls(Record.ToList(Record.SelectFields(TargetRow, TargetColumns))){0} in TargetValue
补充提示
- 如果目标列范围内存在多个非空值,可根据值的类型、内容特征,用
List.Select替代List.RemoveNulls做精准筛选,比如List.Select(..., each _ is number)筛选数值类型的值。 - 若要将提取的结果添加为新列,只需将上述逻辑整合到现有查询中,新增
Added Target Column = Table.AddColumn(#"Added Custom", "提取值", each TargetValue)步骤即可。
内容的提问来源于stack exchange,提问作者chi005
相关产品推荐
相关产品推荐

