根据不同的单元格范围内的条件使用RANK函数来获取单元格范围

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

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

这样做效果很好,但是如果只有在同一行但不同列中的相应值符合某些标准的情况下,才可以对值进行sorting,则会更好。

是这样的事情是可能的,我将如何做到这一点? 我将如何更新上面的示例公式来使更改工作? 非常感谢您的帮助。

PS:我试图把它放在一张桌子上,但实际上并不奏效,对不起…

您可以使用COUNTIFS函数根据另一列中的条件进行sorting,例如,将第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中的公式结果将相应地改变

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

我的build议是创build一个不包含零的列(让我们假设这是在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仅执行所选行的sorting: =IF(S24="", "", RANK(S24, S$24:S$29))

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

巴里胡迪尼的答案,使用表格格式的重新说明。 Value_Col是具有排名值的列。 Group_Column是按值sorting的列,用于在组内排名

= COUNTIFS([Value_Col],“>”和[@ [Value]],[Value_Column],“<> 0”,[Group_Column],[@ [Group]] +1