0

我对 MS Excel 2010 中的 RANK 函数有疑问。我有一个大工作表,我想根据列中的值对其行进行排名。这些值可以是正值或负值。我在这里找到了有用的建议,它解释了如何对列中的值进行排名,同时从排名和排名计数中排除所有等于零的值。他们使用以下公式:

IF(O24<0, RANK(O24,$O$24:$O$29) - COUNTIF($O$24:$O$29,0), IF(O24=0, "", RANK(O24,$O$24:$O$29)))

这很好用,但如果我可以仅在同一行但不同列中的相应值满足某些标准时对这些值进行排名,那就更好了。

这样的事情可能吗?我该怎么做?我将如何更新上面的示例公式以使更改生效?非常感谢您的帮助。

PS:我试过放一张桌子,但它并没有真正起作用,对不起......

4

3 回答 3

2

您可以使用COUNTIFS函数根据另一列中的条件进行排名,例如复制下来的第 24 行中的这个公式[编辑以包括额外的 IF)

=IF(O24=0,"",IF(N24="x",COUNTIFS(O$24:O$29,">"&O24,O$24:O$29,"<>0",N$24:N$29,"x")+1,""))

这将在列 N =“x”的情况下从高到低排列,忽略零值

请参阅此示例列 N 和 O 包含随机值 - 按 F9 重新生成新的随机值,Q 列中的公式结果将相应更改

于 2013-04-12T19:41:47.403 回答
0

每当您添加新的排名标准时,当然可以继续创建更复杂的公式。但是,通过使用单步公式创建中间列,您将使电子表格更易于理解,并且更易于添加新条件或编辑现有条件。

我的建议是创建一个不包括零的列(假设这是在 P 列中):=IF(O24 = 0, "", O24)

然后在 R 列中,消除负值(这一步是不必要的,但你原来的公式做了类似的事情):=IF(P24 = "", "", P24 - MIN(0, MIN($O$24:$O$29)))

现在在 S 列中,添加您的最新标准:=IF(OR(R24="", [enter newest criteria here]), "", R24)

最后,T 列只对选中的行进行排序:=IF(S24="", "", RANK(S24, S$24:S$29))

如果暴露列 P、R 和 S 很麻烦,您可以随时隐藏它们。

于 2013-04-12T19:32:45.243 回答
0

使用表格格式对 barry houdini 的答案进行了改写。Value_Col 是包含要排名的值的列。Group_Column 是按值分组的列,用于在组内排名

=COUNTIFS([Value_Col], ">"&[@[Value]], [Value_Column],"<>0", [Group_Column], [@[Group]]) +1

于 2016-02-22T13:34:14.553 回答