我对MS Excel 2010中的RANK函数有疑问。我有一个大型工作表,我想根据列中的值对行进行排名。这些值可以是正数或负数。我找到了有用的建议here,它解释了如何对列中的值进行排名,同时排除排名和排名计数中等于零的所有值。他们使用以下公式:
IF(O24<0, RANK(O24,$O$24:$O$29) - COUNTIF($O$24:$O$29,0), IF(O24=0, "", RANK(O24,$O$24:$O$29)))
这很好用,但如果只有当同一行但不同列中的相应值符合某些条件时才能对值进行排名会更好。
这样的事情可能吗?我该怎么做?我如何更新上面的示例公式以使更改有效?非常感谢您的帮助。
P.S。:我试过放一张桌子,但它没有真正起作用,对不起......
答案 0 :(得分: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”时,它将从高到低排名,忽略零值
请参阅this example列N和O包含随机值 - 按F9重新生成新的随机值,列Q中的公式结果将相应更改
答案 1 :(得分: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列很麻烦,您可以随时隐藏它们。
答案 2 :(得分:0)
使用表格格式重写barry houdini的答案。 Value_Col是具有要排名的值的列。 Group_Column是具有group by values的列,用于在组中排名
= COUNTIFS([Value_Col],“&gt;”&amp; [@ [Value]],[Value_Column],“&lt;&gt; 0”,[Group_Column],[@ [Group]])+1