对于像Excel中PERCENTRANK.INC()一样工作的数据子集,是否有更好的百分位数排名?

对于像Excel中PERCENTRANK.INC()一样工作的数据子集,是否有更好的百分位数排名?,excel,algorithm,excel-formula,formula,Excel,Algorithm,Excel Formula,Formula,我们在Excel中使用PERCENTILERANK.INC(),没有任何问题。下面标有“Pctl Inc”的列使用以下公式: =PERCENTRANK.INC($B$2:$B$6,B2,3) 我还构建了一个公式,该公式基于另一列文本值对子集数据中的值子集进行排序。我的公式与此链接中的公式一样: 以下是我在该链接中提到的具体公式: =(SUMPRODUCT(($A$2:$A$6=A2)*(B2>=$B$2:$B$6)))/COUNTIF($A$2:$A$6,A2) (请注意,站点链接的

我们在Excel中使用PERCENTILERANK.INC(),没有任何问题。下面标有“Pctl Inc”的列使用以下公式:

=PERCENTRANK.INC($B$2:$B$6,B2,3)
我还构建了一个公式,该公式基于另一列文本值对子集数据中的值子集进行排序。我的公式与此链接中的公式一样:

以下是我在该链接中提到的具体公式:

=(SUMPRODUCT(($A$2:$A$6=A2)*(B2>=$B$2:$B$6)))/COUNTIF($A$2:$A$6,A2)
(请注意,站点链接的公式中有一个输入错误,而我的是您要用来测试的。)

我在下面提供的数据中,上面的公式标有“Pctl W/in”

“子集标签”列表示它们应该在其中的子集。稍后再谈。“Rk值”是指在所有情况下进行排名的项目

我的目标是只更改“Pctl W/in”公式,以便在不涉及子集设置的情况下,它返回与“Pctl Inc”列相同的值。也就是说,我们喜欢“Pctl Inc”列的行为,但我们需要一个公式来模拟相同数据子集的排序方式

以下是可用于创建“匹配”的数据。请注意,我有意使所有“子集标签”相同,以便您可以轻松匹配列组。此处的Pctl Inc和Pctl W/in值应相同,因为它们都具有相同的子集标签:

无子集:

  • 子集标签、Rk值、Pctl Inc、Pctl W/in
  • a、 100,1,1
  • a、 0,0.25,0.4
  • a、 6,0.5,0.6
  • a、 -1,0,0.2
  • a、 7,0.75,0.8
“Pctl W/in”数据是错误的,因此这篇文章。上面的值是我当前得到的值,我希望它们与取出子集组件时的“Pctl Inc”值类似:

有子集:

对于a:

  • Rk Pctl公司的子集标签值
  • a、 100,1
  • a、 0,0.5
  • a、 -1,0
对于b:

  • 子集标签,Rk值,Pctl公司
  • b、 6,0
  • b、 7,1
换句话说,如果工作正常,则“所有人”的排名应如下所示:

  • 子集标签、Rk值、Pctl Inc、Pctl W/in
  • a、 100,1,1
  • a、 0,0.25,0.5
  • b、 6,0.5,0
  • a、 -1,0,0
  • b、 7,0.75,1
PS-有人能告诉我如何在stackoverflow帖子中创建好的网格吗?

以下是答案:

=IFERROR(1-(COUNTIFS(A$2:A$6,A2,B$2:B$6,">="&B2)-1)/(COUNTIF(A$2:A$6,A2)-1),1)
注:

  • 数组公式可以更简单地解决这个问题,但我不能使用数组公式
  • 当只有一个特定的子集标签(例如,多个a和只有一个b)时,IFERROR(…,1)wrap解决了#DIV/0错误
  • 这正确地模拟了排名值平分时的PERCENTRANK.INC()

  • 使用此网站创建了一些好的表:。