查找值和列标题

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

我有一个问题让我对 power query excel 感到疯狂。 我有一个包含多列的表,我想找到每行的第一个非空值。没关系,我可以用通常的方式做到这一点: Table.AddColumn(#"Previous", "NotNull" 每个 List.First(List.RemoveNulls({ColA,ColB,ColC}))) 但我正在努力寻找出现在哪一列中。

我尝试了 Table.ColumnNames 和类似的组合,但没有结果。嵌套 if 逐列检查的原始解决方案让我不满意。

我可以在 R/Python 中毫不费力地做到这一点,但我想在 PQ excel 中做到这一点。

谁能给我一个线索?我缺少什么功能吗?

indexing find powerquery lookup
2个回答
1
投票

使用 Table.ColumnNames 函数获取表中列名的列表。

然后使用List.PositionOf函数在每一行中找到第一个非空值的索引。

来源:Table.ColumnNameList.PositionOf


0
投票

添加列,自定义列,命名为Contents带公式

= List.RemoveNulls(Record.ToList(_)){0}

= List.First(List.RemoveNulls(Record.ToList(_)))

拿起每行的第一个项目

添加列,自定义列,带公式

= Table.ColumnNames(#"PriorStepNameHere){List.PositionOf(Record.ToList(_),[Contents])}

找到包含该内容的列名(第一个)

完整代码

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "Contents", each List.First(List.RemoveNulls(Record.ToList(_)))),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "ColumnName", each Table.ColumnNames(Source){List.PositionOf(Record.ToList(_),[Contents])})
in  #"Added Custom1"
© www.soinside.com 2019 - 2024. All rights reserved.