Excel Power Query M 语言中的条件最大值?

Conditional Max in Excel Power Query M language?

我面临着在 Power Query M 语言中为 MAXIFs 重复使用整洁的 Excel 公式的问题。 该公式本身包含有关表 2 中列的几个条件和表 1 中的感兴趣值 (VOI)(均为 Excel table 个对象)。

表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 合并,按某些列分组,但结果我收到了我无法t/don不知道如何在后续步骤中利用的数据块。我根本看不到Power Query M语言程序的全貌。

如有任何帮助,我们将不胜感激。

相应的想法是在过滤后取最大值 table。

例如,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(_) => 结构。