在功率查询中返回一列的条件值,如果该值等于另一列的最大值

时间:2019-12-19 12:10:27

标签: excel powerquery

我想在我的 power查询 表中添加if else条件列(“ E”),该条件列将检查我的“ C”列中的值是否相等达到或不达到该列的最大值。如果为true,则该字段的值应为列中的值,否则为-1。

该列的excel等效公式如下

if(Max(C:C)=C2,C2,"-1")  #2 = row number
repeated in all the rows for E column

等效宏代码

   mx = Application.worksheetfunction.max(range("C:C"))
   for i = 2 to 20
   if  range("C"&i).value = mx then
       range("E"&i).value = mx
   else 
       range("E"&i).value = -1
   end if
   next i

在尝试使用添加条件列时,我没有将Statistic函数作为选项,在M语言中,我尝试使用以下代码

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"A", Int64.Type}, {"B", type datetime}, {"C", Int64.Type}, {"D", Int64.Type}}),
    x = Table.Max(#"Changed Type","C")
in
    x

x给出了一个表而不是一个值,所以我不能在if else语句中使用它。我也在尝试添加自定义列,但找不到任何解决方案。

下面是供参考的样本表。

enter image description here

1 个答案:

答案 0 :(得分:3)

关闭。试试

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"A", Int64.Type}, {"B", type datetime}, {"C", Int64.Type}, {"D", Int64.Type}}),
x = List.Max(#"Changed Type"[C]),
#"Added Custom" = Table.AddColumn(#"Changed Type", "E", each if [C] = x then [C] else -1)
in #"Added Custom"

或保存一个步骤

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"A", Int64.Type}, {"B", type datetime}, {"C", Int64.Type}, {"D", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "E", each if [C] = List.Max(Source[C]) then [C] else -1)
in #"Added Custom"