[英]Use RANK function for cell range based on criteria in separate cell range
我有一個關於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:我試過放一張桌子,但它沒有真正起作用,對不起......
您可以使用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中的公式結果將相應更改
當您添加要排名的新條件時,當然可以繼續創建更復雜的公式。 但是,通過使用單步公式創建中間列,您可以更輕松地理解電子表格,更輕松地添加新條件或編輯現有條件。
我的建議是創建一個排除零的列(讓我們假設這是在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很麻煩,您可以隨時隱藏它們。
使用表格格式重寫barry houdini的答案。 Value_Col是具有要排名的值的列。 Group_Column是具有group by values的列,用於在組內排名
= COUNTIFS([Value_Col],“>”&[@ [Value]],[Value_Column],“<> 0”,[Group_Column],[@ [Group]])+1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.