首页 > 解决方案 > Excel Power Query M语言中的条件最大值?

问题描述

我面临MAXIFs在 Power Query M 语言中重用简洁 Excel 公式的问题。公式本身包含关于表 2 中的列的几个条件和表 1 中的感兴趣值 (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 语言的完整过程。

任何帮助,将不胜感激。

标签: excelexcel-formulapowerqueryexcel-2016

解决方案


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

例如,该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]
        )
)

我建议阅读这篇博文,以便更好地理解each(_) =>结构。


推荐阅读