像Excel中的PERCENTRANK.INC()一样工作的数据子集的百分位数更高?

时间:2015-06-26 19:44:43

标签: excel algorithm excel-formula formula

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

=PERCENTRANK.INC($B$2:$B$6,B2,3)

我还构建了一个公式,该公式根据另一列文本值对子集数据中的值的子集进行排名。我的公式就像这个链接中的公式一样: http://www.exceltactics.com/calculate-percentile-conditional-ranking-using-sumproduct/

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

=(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”值:< / p>

使用子集:

对于a:

  • Rk Pctl Inc的子集标签值
  • a,100,1
  • a,0,0.5
  • a,-1,0

对于b:

  • 子集标签,Rk,Pctl Inc的值
  • 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帖子中创建好的网格吗?

1 个答案:

答案 0 :(得分:0)

以下是答案:

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

注意:

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