【问题标题】:Move up values when null Power Query为空 Power Query 时上移值
【发布时间】:2020-11-12 10:53:50
【问题描述】:

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

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

C1   | C2   | C3
V1   | null | null
V2   | null | null
null | V3   | null
null | null | V4
null | null | V5

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

C1   | C2   | C3
V1   | V3   | V4
V2   | null | V5
null | null | null
null | null | null
null | null | null

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

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

提前致谢!

【问题讨论】:

    标签: excel vba null pivot powerquery


    【解决方案1】:

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

    Table.FromColumns(
        {
            List.RemoveNulls(Pivot[C1]),
            List.RemoveNulls(Pivot[C2]),
            List.RemoveNulls(Pivot[C3])
        },
        {"C1","C2","C3"}
    )
    

    结果:

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


    编辑:

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

    Table.FromColumns(
        List.Transform(Table.ToColumns(Pivot), List.RemoveNulls), 
        Table.ColumnNames(Pivot)
    )
    

    【讨论】:

    • 感谢您的 cmets!我必须考虑一下,因为它完全有用,但我有 219 列,并且有可能列是可变的。如果您有任何想法,我将不胜感激。再次感谢您!
    • 我可以在新工作表中使用 VBA 完成此操作,只需复制并粘贴电源查询的结果。代码形成每一列并删除空单元格并提升值。谢谢
    • 这太棒了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    相关资源
    最近更新 更多