【问题标题】:How to give a ranking to rows based on multiple criteria against weighted factors?如何根据加权因素的多个标准对行进行排名?
【发布时间】:2019-08-19 10:57:05
【问题描述】:

我正在设置一个允许您输入值的 excel 文件,然后它将为每个值提供 1 到 5 的排名,然后根据一组加权值比较所有值。

这是一个我正在努力解决的业务问题,因为我需要设计一个排名系统,该系统需要考虑所有因素来决定我想做的哪个选项是最好的。

但是,某些因素需要对 IF 函数进行不同的排列。因为对于某些列,值越高=排名越低,反之亦然。

我已经为每个因素设置了排名 1 到 5 的标准。

示例:潜在客户数量越多,排名越高。每次转化费用越高,排名越低。等等。下面是我编写的代码示例:每列都不同(我将提供文件链接)

=IF(D7<1," ",IF(D7<=500,"1",IF(D7<=2500,"2",IF(D7<=3750,"3",IF(D7<=5000,"4",IF(D7>5000,"5"))))))

=IF(E7<1," ",IF(E7<=250,"1",IF(E7<=499,"2",IF(E7<=999,"3",IF(E7<=2500,"4",IF(E7>2500,"5"))))))

=IF(F7>7,"1",IF(F7>5,"2",IF(F7>3,"3",IF(F7>1,"4",IF(F7=1,"5",IF(F7<1," "))))))

=IF(G7>29,"1",IF(G7>19,"2",IF(G7>9,"3",IF(G7>4,"4",IF(G7>0.1,"5",IF(G7=0," "))))))

=IF(H7<1," ",IF(H7<=500000,"1",IF(H7<=1200000,"2",IF(H7<=2500000,"3",IF(H7<=4000000,"4",IF(H7>4000000,"5"))))))

所以现在我们有一个新表,其中包括所有排名 1 到 5。但是,我没有(或必须)以某种方式将加权因子放入等式中以考虑权重(因为这确实会影响决赛排名结果)。

这是我最挣扎的部分,我找不到以某种方式考虑加权值以给出总体值的函数。

提前感谢任何能够帮助我的人。

【问题讨论】:

  • 是和否...所以对于 L12:L16 中的规则集,我的意思是分数,而不是排名。介于 1 到 5 之间的分数。所以 5 实际上是一个不错的分数(因此是绿色)。

标签: if-statement google-sheets google-sheets-formula array-formulas ranking-functions


【解决方案1】:

您只能在 L1 单元格中使用排名:

=ARRAYFORMULA(RANK(D5:D9, D5:D9, 1))

基于 D11:H18 规则,它看起来像:


然后考虑到 L12:L16 中的权重和规则,您将获得每列的分数,例如:

=ARRAYFORMULA(RANK(D5:D9,D5:D9,1)*L3*
 IF(D5:D9< 1, ,
 IF(D5:D9<=500,  1,
 IF(D5:D9<=2500, 2,
 IF(D5:D9<=3750, 3,
 IF(D5:D9<=5000, 4,
 IF(D5:D9> 5000, 5)))))))


然后通过对每行的分数求和,您将获得一个总分,您可以将其排名如下:

=ARRAYFORMULA(RANK(R21:R25, R21:R25))


spreadsheet demo

【讨论】:

  • 感谢您的帮助,但我并不清楚我希望最终结果应该是什么样子。首先,我只想要 1 个最终大师排名。包含所有颜色的“排名 (1-5)”列不应不断变化。相反,我对这张表的意思是从 1 到 5 的分数,这是基于我使用 IF 函数制定的标准。所以对于最终的排名,只会考虑基于IF函数*权重的结果。
【解决方案2】:

删除 L5:S9 范围内的所有内容

将此粘贴​​到 L5 单元格中:

=ARRAYFORMULA({L3*
 IF(D5:D9< 1, ,
 IF(D5:D9<=500,  1,
 IF(D5:D9<=2500, 2,
 IF(D5:D9<=3750, 3,
 IF(D5:D9<=5000, 4,
 IF(D5:D9> 5000, 5)))))),
 M3*
 IF(E5:E9< 1, ,
 IF(E5:E9<=250,  1,
 IF(E5:E9<=499,  2,
 IF(E5:E9<=999,  3,
 IF(E5:E9<=2500, 4,
 IF(E5:E9> 2500, 5)))))), 
 N3*
 IF(F5:F9< 1, ,
 IF(F5:F9> 7, 1,
 IF(F5:F9> 5, 2,
 IF(F5:F9> 3, 3,
 IF(F5:F9> 1, 4,
 IF(F5:F9= 1, 5)))))),
 O3*
 IF(G5:G9= 0, ,
 IF(G5:G9> 29,  1,
 IF(G5:G9> 19,  2,
 IF(G5:G9> 9,   3,
 IF(G5:G9> 4,   4,
 IF(G5:G9> 0.1, 5)))))), 
 P3*
 IF(H5:H9< 1, ,
 IF(H5:H9<=500000,  1,
 IF(H5:H9<=1200000, 2,
 IF(H5:H9<=2500000, 3,
 IF(H5:H9<=4000000, 4,
 IF(H5:H9> 4000000, 5))))))})

将此粘贴​​到 R5 单元格中:

=ARRAYFORMULA(L5:L9+M5:M9+N5:N9+O5:O9+P5:P9)

将此粘贴​​到 S5 单元格中:

=ARRAYFORMULA(RANK(R5:R9, R5:R9))


spreadsheet demo


或替代(如果您不想更改 L5:P9 范围):

=ARRAYFORMULA({L3*
 IF(D5:D9< 1, ,
 IF(D5:D9<=500,  1,
 IF(D5:D9<=2500, 2,
 IF(D5:D9<=3750, 3,
 IF(D5:D9<=5000, 4,
 IF(D5:D9> 5000, 5))))))+
 M3*
 IF(E5:E9< 1, ,
 IF(E5:E9<=250,  1,
 IF(E5:E9<=499,  2,
 IF(E5:E9<=999,  3,
 IF(E5:E9<=2500, 4,
 IF(E5:E9> 2500, 5))))))+ 
 N3*
 IF(F5:F9< 1, ,
 IF(F5:F9> 7, 1,
 IF(F5:F9> 5, 2,
 IF(F5:F9> 3, 3,
 IF(F5:F9> 1, 4,
 IF(F5:F9= 1, 5))))))+
 O3*
 IF(G5:G9= 0, ,
 IF(G5:G9> 29,  1,
 IF(G5:G9> 19,  2,
 IF(G5:G9> 9,   3,
 IF(G5:G9> 4,   4,
 IF(G5:G9> 0.1, 5))))))+ 
 P3*
 IF(H5:H9< 1, ,
 IF(H5:H9<=500000,  1,
 IF(H5:H9<=1200000, 2,
 IF(H5:H9<=2500000, 3,
 IF(H5:H9<=4000000, 4,
 IF(H5:H9> 4000000, 5))))))})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多