基于组织的横向排行榜
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))
我改变了什么:
- 在
LARGE
中添加了 ($B:$B=$B2)
,它将其他组织的所有使用值乘以 0
。 LARGE
函数将不会拾取它。
- 将
ROWS(H:H1)
更改为 COLUMNS($C2:C2)
以便您可以水平排名
- 我还更改了对整个数据集第 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 来完成此操作。然后我们可以清空该组织的所有等级。
要检查组织的使用总和是否为 0,我们可以使用 SUMPRODUCT:
因此对于单元格 D2
,它看起来像:
=SUMPRODUCT(($C:$C)*($B:$B=$B2))=0
然后我们可以在所有内容周围包裹一个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
条件的引号内即可。
我正在尝试计算出不同组织中前 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))
我改变了什么:
- 在
LARGE
中添加了($B:$B=$B2)
,它将其他组织的所有使用值乘以0
。LARGE
函数将不会拾取它。 - 将
ROWS(H:H1)
更改为COLUMNS($C2:C2)
以便您可以水平排名 - 我还更改了对整个数据集第 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 来完成此操作。然后我们可以清空该组织的所有等级。
要检查组织的使用总和是否为 0,我们可以使用
SUMPRODUCT:
因此对于单元格D2
,它看起来像:=SUMPRODUCT(($C:$C)*($B:$B=$B2))=0
然后我们可以在所有内容周围包裹一个
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
条件的引号内即可。