基于组织的横向排行榜

Horizontal Leader Board based on organisation

我正在尝试计算出不同组织中前 3 名用户的排名,并为每个用户水平显示数据,以便将其输入到我们的电子邮件系统中以个性化电子邮件。

我可以创建垂直排名,但我不确定如何根据组织和 return 价值来获得排名公式。

这是我最后需要的东西:

Name    Organisation    Usage   First   Second  Third
User 1  Organisation 1  8   User 3  User 5  User 2
User 2  Organisation 1  10  User 3  User 5  User 2
User 3  Organisation 1  222 User 3  User 5  User 2
User 4  Organisation 1  1   User 3  User 5  User 2
User 5  Organisation 1  14  User 3  User 5  User 2
User 1  Organisation 2  215 User 4  User 1  User 5
User 2  Organisation 2  18  User 4  User 1  User 5
User 3  Organisation 2  12  User 4  User 1  User 5
User 4  Organisation 2  310 User 4  User 1  User 5
User 5  Organisation 2  161 User 4  User 1  User 5

我可以 return 使用

一次对一个组织进行垂直排名
=INDEX($A:$A,MATCH(1,INDEX(($C:$C=LARGE($C:$C,ROWS(H:H1)))*(COUNTIF(H:H1,$A:$A)=0),),0))

如果有人能帮助我 运行 这个基于每个组织和水平的公式那就太棒了!

谢谢,

莎拉。

非空使用解决方案:

假设您的数据开始于 A1 像这样:

    A       B               C       D       E       F
 ---------------------------------------------------------
1 | Name    Organisation    Usage   First   Second  Third
2 | User 1  Organisation 1  8       User 3  User 5  User 2
3 | User 2  Organisation 1  10      User 3  User 5  User 2
4 | User 3  Organisation 1  222     User 3  User 5  User 2
5 | User 4  Organisation 1  1       User 3  User 5  User 2
6 | User 5  Organisation 1  14      User 3  User 5  User 2
7 | User 1  Organisation 2  215     User 4  User 1  User 5
8 | User 2  Organisation 2  18      User 4  User 1  User 5
9 | User 3  Organisation 2  12      User 4  User 1  User 5
10| User 4  Organisation 2  310     User 4  User 1  User 5
11| User 5  Organisation 2  161     User 4  User 1  User 5

您可以将 D2 开始的公式更改为:

=INDEX($A:$A,MATCH(1,INDEX(($C:$C=LARGE(($B:$B=$B2)*$C:$C,COLUMNS($C2:C2)))*(COUNTIF($C2:C2,$A:$A)=0),),0))

我改变了什么:

  1. LARGE 中添加了 ($B:$B=$B2),它将其他组织的所有使用值乘以 0LARGE 函数将不会拾取它。
  2. ROWS(H:H1) 更改为 COLUMNS($C2:C2) 以便您可以水平排名
  3. 我还更改了对整个数据集第 2 行到第 11 行的单元格引用

可能为空的解决方案用法:

如果 Usage 为空(对于同一组织中的所有用户)并且您希望第一、第二和第三列为空,那么也可以这样:

    A       B               C       D       E       F
 ---------------------------------------------------------
1 | Name    Organisation    Usage   First   Second  Third
2 | User 1  Organisation 1  8       User 3  User 5  User 2
3 | User 2  Organisation 1  10      User 3  User 5  User 2
4 | User 3  Organisation 1  222     User 3  User 5  User 2
5 | User 4  Organisation 1  1       User 3  User 5  User 2
6 | User 5  Organisation 1  14      User 3  User 5  User 2
7 | User 1  Organisation 2          
8 | User 2  Organisation 2        
9 | User 3  Organisation 2         
10| User 4  Organisation 2          
11| User 5  Organisation 2          

我们可以通过检查组织的整个使用情况是否为 0 来完成此操作。然后我们可以清空该组织的所有等级。

  1. 要检查组织的使用总和是否为 0,我们可以使用 SUMPRODUCT: 因此对于单元格 D2,它看起来像:

    =SUMPRODUCT(($C:$C)*($B:$B=$B2))=0
    
  2. 然后我们可以在所有内容周围包裹一个IF,如果上面的语句returns为真,则将其空白。所以我们的最终公式看起来像:

    =IF(SUMPRODUCT(($C:$C)*($B:$B=$B2))=0,"",INDEX($A:$A,MATCH(1,INDEX(($C:$C=LARGE(($B:$B=$B2)*$C:$C,COLUMNS($C2:C2)))*(COUNTIF($C2:C2,$A:$A)=0),),0)))
                                                    ^^ Throw whatever you want in there
    

现在,如果您希望文本表达任何其他内容,只需将该文本放在 IF 语句的 TRUE 条件的引号内即可。