【问题标题】:Conditional Max in Excel Power Query M language?Excel Power Query M语言中的条件最大值?
【发布时间】:2020-03-18 10:07:55
【问题描述】:

我面临在 Power Query M 语言中为 MAXIFs 重用简洁 Excel 公式的问题。 公式本身由关于 Table2 中的列的几个条件和 Table1 中的感兴趣值 (VOI) 组成(都是 Excel 表格对象)。

表1中的公式:

=MAXIFS(Table2[columnA],Table2[columnB],"criteriaB1",Table2[columnC],[@[VOI]],Table2[columnA],"<="&MINIFS(Table2[columnA],Table2[columnB],"criteriaB2",Table2[columnC],[@[VOI]])

(为了方便阅读,我将公式分成几行)

=MAXIFS(Table2[columnA],
        Table2[columnB],"criteriaB1",
        Table2[columnC],[@[VOI]],
        Table2[columnA],"<="&MINIFS(Table2[columnA],
                                    Table2[columnB],"criteriaB2",
                                    Table2[columnC],[@[VOI]])

到目前为止,我一直在尝试将 Table1 与 Table2 合并,按一些列进行分组,但结果我收到了我无法/不知道如何在后续步骤中使用的大块数据。我根本看不到 Power Query M 语言的完整过程。

任何帮助将不胜感激。

【问题讨论】:

    标签: excel excel-formula powerquery excel-2016


    【解决方案1】:

    相应的想法是在过滤表上取最大值。

    例如,MINIFS 部分大致如下所示:

    MinA =
    List.Min(
        Table.SelectRows(
            Table2, each [ColumnB] = "criteriaB2" and [ColumnC] = "VOI"
        )[ColumnA]
    )
    

    它变得有点棘手,因为您需要将Table1[VOI] 的当前行值传递给第二个条件,但它仍然可行并且可能看起来像这样:

    AddMinAColumnToTable1 =
    Table.AddColumn(
        Table1, "MinA",
        (Tab1Row) =>
            List.Min(
                Table.SelectRows(
                    Table2, each [ColumnB] = "criteriaB2" and [ColumnC] = Tab1Row[VOI]
                )[ColumnA]
            )
    )
    

    我建议阅读 this blog post 以更好地理解 each(_) =&gt; 结构。

    【讨论】:

      猜你喜欢
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多