子集排名

Ranking with subsets

我正在尝试对值进行排名,并设法弄清楚如何对领带进行排序。我的数据查看条目总数,并据此进行排名,如果有平局,它会查看下一列值以将它们排序。但是,我的数据集中有两个 类(我称它们为东方和西方)数据,我想分别对它们进行排名(但要遵守上述规则)。因此,如果我有 7 个条目,其中 3 个是西部,4 个是东部,我希望西部根据该子集中的所有值排名 1、2、3,而东部将排名 1、2、3, 4.你能解释一下你的公式在做什么吗,这样我就可以理解将来如何更好地应用你的答案。

实际上我是在问需要什么公式才能达到我的结果。

干杯

保罗

有一些相关的方法可以做到这一点,大多数涉及 SUMPRODUCT。如果您不喜欢下面的解决方案并想研究其他 ways/explanations,请尝试搜索 "rankif".

该函数查找 ClassValue 列,对于这些列中的每个值,returns 一个 TRUE 或 1,如果当前 Class 是一个匹配,如果它的 Value 大于当前的 ValueFalse 否则为 0。 SUM把这些1全部加起来,1+是装饰用的。记得用Ctrl+Shift+Enter输入数组公式再往下拖

我使用上面的数组公式和 SUM 来解释,但下面的公式也有效,甚至可能更快,因为它不是数组公式。这是相同的想法,除了我们劫持 SUMPRODUCT 从数组中吐出单个值的能力。

=1+SUMPRODUCT(($A:$A=A2)*($B:$B>B2))

编辑

要扩展 rank-if,您可以通过乘以更多条件来添加更多子集以进行排名:

您还可以通过添加另一个 SUMPRODUCT 将平局视为附加子集来轻松添加决胜局:

第一个 SUMPRODUCT 是 'base rank',而第二个 SUMPRODUCT 是决胜局 #1。