Условный максимум в языке Excel Power Query M? - PullRequest
1 голос
/ 18 марта 2020

Я сталкиваюсь с проблемой повторного использования аккуратной формулы Excel для MAXIFs на языке Power Query M. Сама формула состоит из нескольких условий, касающихся столбцов в таблице 2 и значения интереса (VOI) в таблице 1 (оба являются объектами таблицы Excel).

формула в таблице 1:

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

(I разделю формулы на строки, чтобы упростить чтение)

=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.

Буду признателен за любую помощь.

1 Ответ

1 голос
/ 18 марта 2020

Соответствующей идеей было бы взять максимум над отфильтрованной таблицей.

Например, часть 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 и (_) =>.

...