为空 Power Query 时向上移动值

Alf*_*ova 0 excel null vba pivot powerquery

目前,我在 Excel 中有一个大表,我想将其与动态下拉列表(级联选项)一起使用。根据您在第一个下拉列表中所做的选择,然后在下一个单元格中,您应该有一个过滤的下拉菜单。此外,任何选项对于所选的主要类别都是唯一的。

我做的第一件事是获取我需要的列并旋转它们,使其看起来与此类似(C 是列名,V 是值。由于任何选项对于任何类别都是唯一的,因此我遇到了空值问题,因为它是大量的行):

C1   | C2   | C3
V1   | null | null
V2   | null | null
null | V3   | null
null | null | V4
null | null | V5
Run Code Online (Sandbox Code Playgroud)

此格式不适用于动态下拉列表,因为它首先显示所有空字段。我的问题是是否有任何方法可以使用电源查询删除空值,以便我可以在第一行中获得所有值,例如:

C1   | C2   | C3
V1   | V3   | V4
V2   | null | V5
null | null | null
null | null | null
null | null | null
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用“填充”或“填充”选项,然后删除重复项但不起作用,因为它多次重复相同的元素,这对最终下拉菜单没有用。

不确定是否有办法完成它,因此非常感谢任何帮助或建议。

提前致谢!

Ale*_*son 5

由于列是独立的,您可以将每一列转换为一个列表,删除空值,然后将它们组合回一个表中。

Table.FromColumns(
    {
        List.RemoveNulls(Pivot[C1]),
        List.RemoveNulls(Pivot[C2]),
        List.RemoveNulls(Pivot[C3])
    },
    {"C1","C2","C3"}
)
Run Code Online (Sandbox Code Playgroud)

结果:

结果

如果列数不总是三,但应该应用相同的想法,则可以使这更加动态。


编辑:

它实际上比我最初预期的更简单,使其动态化,独立于列数及其名称:

Table.FromColumns(
    List.Transform(Table.ToColumns(Pivot), List.RemoveNulls), 
    Table.ColumnNames(Pivot)
)
Run Code Online (Sandbox Code Playgroud)