POWERPIVOT - 从现有列中查找新列的最大值

时间:2016-03-24 18:39:25

标签: excel powerpivot dax

我实际上是在尝试创建一个新列,其中某个城市在给定程序的城市中花费了MAX美元,并且CITY值不是“BAD”。下面的数据示例

PROGRAM | CITY | DOLLARS SPENT | NEW COLUMN

   1    |   X  |      $20      |     ?
   1    |   Z  |      $30      |     ?
   1    |   Y  |      $40      |     ?
   1    |  BAD |      $50      |     ?
   2    |   X  |      $30      |     ?
   2    |  BAD |      $50      |     ?

因此,如果City =“BAD”,我希望新列在新列中返回Max Dolnt中的Max City。

理想情况下,输出看起来像这样。

PROGRAM | CITY | DOLLARS SPENT | NEW COLUMN

   1    |   X  |      $20      |     X
   1    |   Z  |      $30      |     Z
   1    |   Y  |      $40      |     Y
   1    |  BAD |      $50      |     Y
   2    |   X  |      $30      |     X
   2    |  BAD |      $50      |     X
你/老虎给出了一个很好的简单回应。仍在寻找完全在powerpivot内完成的解决方案!希望一切都有意义。谢谢!

2 个答案:

答案 0 :(得分:0)

这是一个根据您提供的示例数据执行的公式。在单元格D2中并复制下来:

=IF(B2="BAD",INDEX($B$2:$B$7,MATCH(1,INDEX(($A$2:$A$7=A2)*($B$2:$B$7<>"BAD")*($C$2:$C$7=MAX(INDEX(($B$2:$B$7<>"BAD")*($A$2:$A$7=A2)*$C$2:$C$7,))),),0)),B2)

它会给出如下结果:

enter image description here

答案 1 :(得分:0)

尝试此计算列:

=IF(
  YourTable[City]="BAD",
  CALCULATE(
    VALUES(YourTable[City]),
    TOPN(
      1,
      FILTER(
       ALL(YourTable),
       YourTable[City]<>"BAD"
       && YourTable[Program]=EARLIER(YourTable[Program])
      ),
      YourTable[Dollars Spent]
    )
  ),
  YourTable[City]
 )