Excel DAX 排名和比较值


如果你只想显示顶部 n 一列或数据透视表中的项目数,你有以下两种选择:

  • 你可以选择 n 数据透视表中的最高值的数量。

  • 你可以创建动态排列值的 DAX 公式,然后在切片器中使用排名值。

应用过滤器以仅显示前几个项目


选择 n 要在数据透视表中显示的最高值的数量,请执行以下操作:

  • 单击数据透视表中行标签标题中的向下箭头。
  • 单击下拉列表中的值过滤器,然后单击前 10 个。
Applying a Filter

出现前 10 个过滤器(<列名>)对话框。

  • 在“显示”下,从左到右的框中选择以下内容。
    • Top
    • 18(你要显示的最高值的数量。默认值为 10。)
    • Items.
    • 在 by 框中,选择 Medal Count。
Medal Count
  • 单击确定。前 18 个值将显示在数据透视表中。

应用过滤器的优缺点


优点

  • 它简单易用。
  • 适用于具有大量行的表。

缺点

  • 过滤器仅用于显示目的。

  • 如果数据透视表基础的数据发生更改,你必须手动刷新数据透视表才能看到更改。

创建动态排列值的 DAX 公式


你可以使用包含排名值的 DAX 公式创建计算列。然后,你可以在结果计算列上使用切片器来选择要显示的值。

你可以通过计算同一表中具有大于正在比较的值的行数来获得行中给定值的排名值。该方法返回以下内容:

  • 表中最大值的零值。

  • 相等的值将具有相同的排名值。如果 n 值的个数相等,相等值之后的下一个值将有一个不连续的秩值加起来 n .

例如,如果你有一个包含销售数据的“Sales”表,你可以创建一个计算列,其中包含 Sales Amount 值的排名,如下所示:

= COUNTROWS (FILTER (Sales,  
    EARLIER (Sales [Sales Amount]) < Sales [Sales Amount])
) + 1 

接下来,你可以在新的计算列上插入切片器,并有选择地按等级显示值。

动态排名的优缺点


优点

  • 排名是在表格中完成的,而不是在数据透视表上。因此,可以在任意数量的数据透视表中使用。

  • DAX 公式是动态计算的。因此,即使基础数据发生变化,你也始终可以确保排名是正确的。

  • 由于在计算列中使用了 DAX 公式,因此你可以在 Slicer 中使用排名。

  • 适用于具有大量行的表。

缺点

由于 DAX 计算的计算量很大,因此此方法可能不适合具有大量行的表。