组内子组的唯一排名值

问题描述 投票:3回答:2

我试图获得一个独特的排名值(例如我的数据中来自子组的{1, 2, 3, 4}。SUMPRODUCT将生成ties{1, 1, 3, 4},我试图将COUNTIFS添加到最后以调整重复排名。

                subgroup
col B   col M    rank
LMN       01      1
XYZ       02        
XYZ       02    
ABC       03    
ABC       01    
XYZ       01    
LMN       02      3
ABC       01    
LMN       03      4
LMN       03      4  'should be 5
ABC       02    
XYZ       02    
LMN       01      1  'should be 2   

到目前为止,我已经想出了这个。

=SUMPRODUCT(($B$2:$B$38705=B2)*(M2>$M$2:$M$38705))+countifs(B2:B38705=B2,M2:M38705=M2)

我在这做错了什么?

excel excel-formula rank
2个回答
6
投票

好消息是你可以扔掉SUMPRODUCT function并用一对COUNTIFS functions替换它。 COUNTIFS可以使用完整的列引用而不会产生损害,并且即使SUMPRODUCT单元格范围仅限于数据范围,它也比SUMPRODUCT更有效。

在N2中作为标准函数,

=COUNTIFS(B:B, B2,M:M, "<"&M2)+COUNTIFS(B$2:B2, B2, M$2:M2, M2)

必要时填写。

rank_unique_subgroups_sample_data

Filtered Results

rank_unique_subgroups_group_A filtered results rank_unique_subgroups_group_B_ filtered results rank_unique_subgroups_group_C filtered results


1
投票

基于OP的解决方案

研究你的帖子要求发布任何替代方案,我对基于你的原始方法通过SUMPRODUCT函数的解决方案感兴趣。 IMO这可以为艺术展示正确的方法:

应用方法

得到

  • a)具有低于或等于当前值的组值的所有当前id 减去
  • b)具有相同组值的当前id的数量从当前行开始计数 加
  • c)增量为1

公式示例,例如在单元格N5中:

=SUMPRODUCT(($B$2:$B$38705=$B5)*($M$2:$M$38705<=$M5))-COUNTIFS($B5:$B$38705,$B5,$M5:$M$38705,$M5)+1

附:

当然,我同意你更喜欢上面发布的解决方案:+)

© www.soinside.com 2019 - 2024. All rights reserved.