基于组织的水平领导委员会

时间:2015-05-19 14:53:59

标签: excel-formula lookup ranking

我正在努力计算不同组织的前三名用户的排名,并为每个用户提供水平呈现的数据,以便将其输入我们的电子邮件系统以个性化电子邮件。

我可以垂直创建排名,但我不确定如何根据组织和返回值对公式进行排名。

这是我最终需要的东西:

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

我可以使用

一次垂直返回一个组织的排名
=INDEX($A$2:$A$6,MATCH(1,INDEX(($C$2:$C$6=LARGE($C$2:$C$6,ROWS(H$1:H1)))*(COUNTIF(H$1:H1,$A$2:$A$6)=0),),0))

如果有人可以帮助我根据每个组织运行这个公式,并且横向运行会非常棒!

谢谢,

萨拉。

1 个答案:

答案 0 :(得分:1)

非空用法解决方案:

假设您的数据以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$2:$A$11,MATCH(1,INDEX(($C$2:$C$11=LARGE(($B$2:$B$11=$B2)*$C$2:$C$11,COLUMNS($C2:C2)))*(COUNTIF($C2:C2,$A$2:$A$11)=0),),0))

我改变了什么:

  1. ($B$2:$B$11=$B2)中添加LARGE,将0的其他组织的所有使用值相乘。然后,LARGE函数无法接收该文件。
  2. ROWS(H$1:H1)更改为COLUMNS($C2:C2),以便您可以水平排名
  3. 我还将单元格引用更改为整个数据集第2行到第11行
  4. 可能为空的解决方案用法:

    如果用法为空(为同一组织中的所有用户),并且您希望第一,第二和第三列为空白,那么同样如下:

        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$2:$C$11)*($B$2:$B$11=$B2))=0
      
    2. 然后我们可以将IF包裹在所有内容中,如果上面的语句返回true,则将其清空。所以我们的最终公式看起来像:

      =IF(SUMPRODUCT(($C$2:$C$11)*($B$2:$B$11=$B2))=0,"",INDEX($A$2:$A$11,MATCH(1,INDEX(($C$2:$C$11=LARGE(($B$2:$B$11=$B2)*$C$2:$C$11,COLUMNS($C2:C2)))*(COUNTIF($C2:C2,$A$2:$A$11)=0),),0)))
                                                      ^^ Throw whatever you want in there
      
    3. 现在,如果您希望文本说出其他内容,只需将该文本放在TRUE语句的IF条件的引号内。