W obliczu problemu ponownego ponownego wykorzystania formuły Excel dla MAXIFs w języku Moc Query M. Sama formuła składa się z kilku warunków dotyczących kolumn w Tabeli2 i wartość odsetek (VOI) w Tabeli1 (oba są obiektami tabelami Excel).

Formuła w tabeli1:

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

(Podziałem formuły do linii, aby ułatwić czytanie)

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

Do tej pory próbowałem połączyć table1 z Tabela2, grupowanie przez niektóre kolumny, ale w wyniku czego otrzymuję kawałki danych, których nie mogę / nie wiem, jak wykorzystuje się w następnych krokach. Po prostu nie widzę kompletnego krajobrazu procedury w języku zapytań Moc.

Każda pomoc będzie mile widziana.

1
Oskar_U 18 marzec 2020, 13:07

1 odpowiedź

Najlepsza odpowiedź

Odpowiednim pomysł byłby przyjęcie maksymalnej przez filtrowaną tabelę.

Na przykład część MINIFS wyglądałaby z grubsza:

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

Dostaje się nieco trudniejszy, ponieważ musisz przekazać bieżącą wartość wiersza Table1[VOI] do drugiego stanu, ale nadal jest to możliwe i może wyglądać na coś takiego:

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

Polecam czytanie Ten blog Post dla Lepsze zrozumienie konstrukcji each i {x1}}.

1
Alexis Olson 18 marzec 2020, 14:43