重复时的排名
即使在重复的情况下,如何返回连续的每个值的排名?请看下面的例子。重复时的排名
尽管在排名中处理重复值有许多问题已经得到解答,但我很快就实现了一种适用于我所有案例的方法。
编辑:上面的图片是一个不好的例子,没有解决我的问题。这是一个新的行为图片。
在某些情况下,它跳到7当秩应该只有1:6。在其他情况下,它似乎有效,然后在类似情况下不起作用。数据是:
2.61879723030607 2.3428 2.61879723030607 2.4571 2.7324 2.1790
2.97203355745108 2.5355 2.97203355745108 2.6721 3.0561 2.4136
2.4895 2.2781 2.6218 2.4369 2.6898 2.1361
2.32650000000000 2.2124 2.3453 2.32650000000000 2.3938 2.0283
2.34132608128450 2.1331 2.34132608128450 2.2800 2.5758 2.0446
2.58668483692925 2.1476 2.58668483692925 2.3019 2.5124 2.0135
2.2555 2.0884 2.3368 2.0980 2.3928 1.9787
2.32878217762168 2.1080 2.32878217762168 2.1250 2.5360 1.9807
2.50891263421977 2.2480 2.50891263421977 2.4239 2.9070 2.2638
2.97755287506272 2.4457 2.97755287506272 2.6830 3.0566 2.3987
3.0850 2.5380 5.3880 2.8304 3.1579 2.5030
3.0120 2.3815 3.0639 2.6762 3.0831 2.4253
2.49235468138485 2.1436 2.49235468138485 2.3159 2.5542 1.9991
2.13109025589563 2.1060 2.13109025589563 2.1555 2.3225 1.9787
2.24900295032614 2.0332 2.24900295032614 2.1780 2.5084 2.0043
2.4010 2.0438 2.5857 2.2126 2.4511 2.0329
EDIT2:实施RANK代替RANK.EQ表示没有区别:
尝试的RANK
代替RANK.EQ
如下。虽然我不知道这会不会起作用,因为我用Excel 07.
测试中Cell H1
=RANK(A1,$A1:$F1,1)+COUNTIF($A1:A1,A1)-1
复制输入以下公式/根据需要,纵向和横向(右)拖动公式。请参阅图片以供参考。
按照微软的文档上RANK.EQ function
here
RANK.EQ给人重复号码相同的等级。但是,重复号码的存在会影响后续号码的等级。例如,在按升序排序,如果标记10出现两次并且具有5秩整数列表,然后11将具有7:3的秩(没有数将具有6秩)
我认为你的设置中有错误。我的理解是每一行都是一个独立的独立案例,然而当你只有固定的列引用时,你的公式用于计算排名具有固定的行和列引用。现在,每个值的排名都是基于数据的第一行。相反的:
=RANK.EQ(B4,$B$4:$G$4,1)
它应该是:
=RANK.EQ(B4,$B4:$G4,1)
这就改变了在第二和第三块你的结果,你应该得到的3块所需的结果。
感谢您的回答,请参阅我的编辑,因为第二张图片现在是唯一相关的图片。 –
您的更新示例很好地显示了您的问题,但不幸的是我无法重现。我已经完全复制了你的数据,但我得到了你想要的结果。我猜测这是计算存储为浮点数的某种问题。如果我们可以看到公式的哪部分失败,那么调试会更容易。您能否将RANK.EQ和COUNTIF公式应用于单独的单元格中,以便我们可以看到哪些失败? – Michael
明天之前我无法更新。我认为如果一个问题对我来说太困难了......我的解决方法是在我的范围中添加一个非常小的动态数字,如“+ COL(A1)/ 1000000”,以消除关系。这意味着另一张桌子,但如果我不能得到一个公式工作,这是我最好的选择。明天更新 –
用以下公式在单元格B2:B4中,您可以筛选列A中的唯一编号。 请注意,这是一个阵列公式所以一旦你输入它,你必须标记它并按CTRL
DEL
。希望这能解决你的问题。关于这个公式的更多细节,你也可以在这里找到https://exceljet.net/formula/extract-unique-items-from-a-list
Column A Column B
1
1 1 = {=INDEX($A$1:$A$5000,MATCH(0,COUNTIF($B$1:B1,$A$1:$A$5000),0))}
1 2 = {=INDEX($A$1:$A$5000,MATCH(0,COUNTIF($B$1:B2,$A$1:$A$5000),0))}
1 6 = {=INDEX($A$1:$A$5000,MATCH(0,COUNTIF($B$1:B3,$A$1:$A$5000),0))}
1
1
1
1
1
1
1
2
1
6
6
6
6
6
6
6
6
6
6
6
6
6
感谢您的答复Michi。但是,这似乎解决了从列表中拉取值的问题,而不是返回每行的(在您的示例中)排名。我的例子是每列,但这仍然不适用。 –
@EvanFriedland - 查看我的答案。 – Mrig
查看我的编辑#2图片,我已在2010年和2013年进行过测试 –