【问题标题】:Rank subgroup within dynamic range在动态范围内对子组进行排名
【发布时间】:2016-12-22 07:05:04
【问题描述】:

我有一个这样的 ROI 比较表:

Month | ROI | 1  | 2  | 3  |
Jul   | A   | 1% | 
Jul   | B   | 3% |
Jul   | C   | 2% |
Jun   | A   | 4% | 6% |
Jun   | B   | 5% | 7% |
Jun   | C   | 6% | 8% |
May   | A   | 2% | 4% | 7% |
May   | C   | 3% | 5% | 6% |

我想每个月对每个产品的投资回报率(A、B 和 C)进行排名 - 所以只对给定月份的最合适的百分比进行排名。

但范围需要是动态的,因为每种产品可能有不同的发布日期。例如,5 月份没有产品 B。

所以输出将是:

   Month  | ROI | 1  | 2  | 3  | Rank
    Jul   | A   | 1% |    |    | 3
    Jul   | B   | 3% |    |    | 1
    Jul   | C   | 2% |    |    | 2
    Jun   | A   | 4% | 6% |    | 3
    Jun   | B   | 5% | 7% |    | 2
    Jun   | C   | 6% | 8% |    | 1
    May   | A   | 2% | 4% | 7% | 1
    May   | C   | 3% | 5% | 6% | 2

我正在考虑使用索引/匹配功能:

=RANK(INDEX(G3:S3,MATCH(9^99,G3:S3,1)),G3:G5,0)

但我不确定如何使 G3:G5 动态化。

【问题讨论】:

标签: excel indexing excel-formula match rank


【解决方案1】:

我想我设法让它在排名列中使用以下公式:

=RANK(OFFSET(G3,,SUM(--ISNUMBER(G3:S3))-1),
      OFFSET(G3,COUNTIF(E3:$E$999,E3)-COUNTIF($E$1:$E$999,E3),
                SUM(--ISNUMBER(G3:S3))-1,COUNTIF($E$1:$E$999,E3)))

(假设你的月份是E1:E999)。

它的作用是查看 G3 并使用 OFFSET 移动到最右边的非空 (ISNUMBER) 列,并认为该值在 OFFSET 数组中排名,其中月份与当前行的月。

让我们分解第二个OFFSET 公式(假设我们正在考虑Jul 行):

  • G3开始。
  • 行偏移:当前行下方的Jul 行数(含)-Jul 行的总计数。
  • 列偏移:当前行中包含数字的单元格计数 - 1
  • 高度:Jul 行总数。

这是一个数组公式,所以必须使用Ctrl+Shift+Enter输入。

注意:如果月份相同,该公式假定最右边的值在同一列中。这在您给定的示例中成立,但我不知道它是否适用于您的完整数据集。如果一般情况下不是这样,您可以使用公式的第一个 OFFSET 部分创建一个帮助列

=OFFSET(G3,,SUM(--ISNUMBER(G3:S3))-1)

获取每行中最右边的数字,然后在该帮助列上进行排名。

【讨论】:

    【解决方案2】:

    从使用COUNTIFS function 的简单子分组排名开始。

    =COUNTIFS(A:A, A2, C:C, "<="&C2)
    

    在近似为MATCH 的多列范围上使用INDEX 修改百分比范围以捕获该行中最右边的数字。

    =COUNTIFS(A:A, A2, INDEX(A:F, 0, MATCH(1E+99, A2:F2)), ">="&INDEX(A:F, ROW(2:2), MATCH(1E+99, A2:F2)))
    

    根据需要填写。

    【讨论】:

    • 既然您已经为您的问题选择了一个答案,我希望这将通过COUNTIFS function 以升序和降序说明条件排名。现在提及它可能为时已晚,因为我确信您已经掌握了两个提供的公式之间的逆排名顺序。
    猜你喜欢
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 2021-10-18
    相关资源
    最近更新 更多