如何根据条件获取特定行的百分比排名?

How to take percentage rank of specific rows on conditional?

我想将一些数据转换为百分比排名,但是我该怎么做才能在另一列的值在同一行中时仅采用行的百分比排名?

我的数据:

821073  4086    woodland
1367182 8483    woodland
774315  3908    greenspace
3155757 9229    greenspace
2298996 9195    greenspace
1133531 5386    greenspace
1839304 6111    woodland
642198  3109    artificial_forest
642198  3109    artificial_forest
9727658 26260   artificial_forest
517463  2776    artificial_forest
3082246 8345    forest
1043860 6873    forest
1851161 5790    forest
762000  3633    greenarea
1575599 5980    greenarea
534234  2795    greenarea
1783711 5446    greenarea

在这个例子中,我想计算 AreaPerimtr 对于 Artificial_forestgreen_area 的平均百分比排名,我已经尝试过:

=AVERAGE(PERCENTRANK.INC($F:$F, $F:$F,F8, F15))

我最终得到 woodland, greenspace, forest 的重复值,我怎样才能得到它,以便它只采用 artificial_forestgreenarea 的平均百分比排名,其中 [=29] =] NA0 其他地方?

修订后的决议

截图/here参考:

鉴于 Office 365 可用(根据@Stackbeans 的评论,t-19hrs),将 percentranks 合并到一个数组中的一种更简洁的方法如下(屏幕截图,请参阅此处):

=SORT(IFERROR(PERCENTRANK.INC(FILTER(B4:C21,$D:$D=$G),FILTER(B4:C21,$D:$D=$G)),""),,1)

无需重现此 'array/spill-type' 等式即可直接确定平均值,如下所示:

面积

=AVERAGE(INDEX(SORT(IFERROR(PERCENTRANK.INC(FILTER(B4:C21,$D:$D=$G),FILTER(B4:C21,$D:$D=$G)),""),,1),0,1))

周长

=AVERAGE(INDEX(SORT(IFERROR(PERCENTRANK.INC(FILTER(B4:C21,$D:$D=$G),FILTER(B4:C21,$D:$D=$G)),""),,1),0,2))

OR 如果要在 excel 内复制和显示数组,那么这会稍微简化平均值的公式:

=AVERAGE(INDEX(R3#,0,2))

(面积使用average(index(r3#,0,1))



奖金

要包括验证列表下拉列表(参考下面的屏幕截图)

  1. 创建查找列表,例如=UNIQUE(D4:D21) 在单元格 N3 中
  2. Select 主功能区中的名称管理器,公式部分:

  1. 在弹出的 GUI 中,select 'new',输入名称(此处为 'Name_Lookup')和参考方程式(此处为 = $N#),并注明final # 这使得它成为适用于 'spill-type' ranges/arrays...
  2. 的动态范围

  1. 点击 'Close' 到 return 到第一个 window 弹出窗口,然后通过单击 [=153= 上的向上小箭头检查结果命名范围的范围] 图形界面中方程栏附近:

  1. 创建一个验证列表:单元格 G5:键入 alt + d + L(按顺序,在按下一个按钮之前松开一个按钮)。有关验证列表的更多信息,请参阅 here...

  2. 第一个window弹出的GUI,select从下拉菜单中列出并输入相应的参考公式:= Name_Lookup,如:

  1. 突出显示不同颜色的单元格(不是必需的,但 sheet 对其他人更友好)...


原始解决方案

截图/here参考

我单独考虑 'area' - 这可以很容易地以相同的方式扩展到 perimtr。

到return过滤结果的每个级别percentrank对应的值数组,使用:

=SORT(IFERROR(PERCENTRANK.INC(IF($D:$D=$G,B4:B21,""),IF($D:$D=$G,B4:B21,"")),""),,1)

要计算此数组中值的平均值 percentrank,请使用:

=AVERAGE(IFERROR(PERCENTRANK.INC(IF($D:$D=$G,B4:B21,""),IF($D:$D=$G,B4:B21,"")),""))


备注

  • 查找功能需要 Excel 的 Office 365 兼容版本。不是基本功能(未被要求)所以假设如果无法访问上述 Excel 版本可以忽略此功能...
  • 要检索数组中的单个值,请使用 =INDEX(SORT(IFERROR(PERCENTRANK.INC(IF($D:$D=$G,B4:B21,""),IF($D:$D=$G,B4:B21,"")),""),,1),I1),其中最后一个组件 (I1 = 1,2,..) 表示所述索引的(有序)排名..