眼盲看不見問題:excel多條件排序、rank VS SUMPRODUCT

請教:
目標是,如果有科目缺考的,雖然總級分有分數,但不納入排序,要以空白顯示.
小弟產出的公式為IF(OR(E2="-",F2="-",G2="-",H2="-",J2="-",K2="-"),"缺考",IF(SUMPRODUCT(--(E2:K2<>"-"))=COLUMNS(E2:K2),RANK.EQ(L2,$L$2:$L$13,0),""))

但是如圖,總共只有6名學生要進行總分排序,理應是只有第1,2,3,4,5,6名,
但公式執行結果卻是第1,2,3,6,7,11名。可知它仍將全部學生(不篩選的話)總名皆納入排名了...

請問公式該如何修正???? 感謝~

相關數據如下, 可用資料剖析,逗號區隔貼入EXCEL
1號學生的七科成績為:11,8,7,4,5.5,5,9
2號學生的七科成績為:9,5,5,6,5.5,-,10
3號學生的七科成績為:6,7,5,5,5,5,8
4號學生的七科成績為:8,5,3,6,4.5,6,8
5號學生的七科成績為:10,8,4,4,4,-,10
6號學生的七科成績為:7,2,4,3,3.5,4,5
7號學生的七科成績為:10,3,4,2,3,-,8
8號學生的七科成績為:9,4,4,4,4,-,10
9號學生的七科成績為:-,-,-,-,0,-,-
10號學生的七科成績為:6,12,2,4,3,-,10
11號學生的七科成績為:9,8,4,3,3.5,5,7
12號學生的七科成績為:8,3,3,4,3.5,6,10
眼盲看不見問題:excel多條件排序、rank VS SUMPRODUCT
2023-11-29 9:47 發佈
AI隨便回答的看看就好
請注意,排名函數(如RANK.EQ)在計算排名時,如果有相同分數的情況,會將相同分數的學生視為同一名次。因此,在有相同分數的情況下,你可能會得到非預期的排名。

以下是修正你的公式的建議。我們將在計算排名前先檢查是否有缺考,如果有缺考則返回空白,否則再進行排名計算。
=IF(OR(E2="-",F2="-",G2="-",H2="-",J2="-",K2="-"), "", RANK.EQ(L2, IF(SUMPRODUCT(--(E2:K2<>"-"))=COLUMNS(E2:K2), $L$2:$L$13, ""), 0))

這個公式的思路是,如果有缺考(即任何一科的成績為"- "),則返回空白;否則,才進行排名計算。這樣可以確保只有有成績的學生才參與排名。
emogu
emogu 樓主

謝謝你, 但似乎還是無解

2023-11-30 13:55
我想了一下,換個角度可以做到
使用FILTER,需要365才能使用

幫你分步驟讓你好了解

=FILTER(A$3:I$14,(B$3:B$14<>"-")*(C$3:C$14<>"-")*(D$3:D$14<>"-")*(E$3:E$14<>"-")*(F$3:F$14<>"-")*(G$3:G$14<>"-")*(H$3:H$14<>"-"))
這樣的方式幫你把缺考的列出來,參考下面那一張多出來的表格




接著使用
=COUNT(FILTER(A$3:A$14,(A$3:A$14=A3)*(B$3:B$14<>"-")*(C$3:C$14<>"-")*(D$3:D$14<>"-")*(E$3:E$14<>"-")*(F$3:F$14<>"-")*(G$3:G$14<>"-")*(H$3:H$14<>"-")))

這裡面可看到我將過濾條件稍微改一下
主要是要把上面那一張過濾出來的表格把座號相同的挑出來,加上一個Count,也就是1的就是沒缺考的。
你看一下J那個欄位,1是沒缺考,0是缺考的,J4~J13直接複製J3



接著就是把上面這個條件稍微改一下

=IFS(COUNT(FILTER(A$3:A$14,(A$3:A$14=A3)*(B$3:B$14<>"-")*(C$3:C$14<>"-")*(D$3:D$14<>"-")*(E$3:E$14<>"-")*(F$3:F$14<>"-")*(G$3:G$14<>"-")*(H$3:H$14<>"-")))=0,"缺考",TRUE,COUNT(FILTER(I$3:I$14,(I$3:I$14>I3)*(B$3:B$14<>"-")*(C$3:C$14<>"-")*(D$3:D$14<>"-")*(E$3:E$14<>"-")*(F$3:F$14<>"-")*(G$3:G$14<>"-")*(H$3:H$14<>"-")))+1)

IFS 第一個判斷就是前面那個0缺考的,直接填上缺考字串
最後那一個就是1要計算的內容
跟前面類似,前面是過濾出座號跟自己相同的(A$3:A$14=A3),1就是自己沒缺考
現在是過濾出比自己大的總分人數(I$3:I$14>I3),第一名就是0,因為沒有比自己大,所以最後會有一個+1,

同樣的K4~K13直接複製K3





其實這樣的複雜運算我不怎麼喜歡用EXCEL處理
做是做的到,但用其它寫程式的方式更簡單
用EXCEL,我會設計簡單一點的
例如前面的第一個表格已經可以最到沒缺考的排名,稍微變化一下簡單許多
缺考的拆成另一張表格,就變成缺考名單就好,反正總分又不排名
這樣運算式不用寫得非常複雜,也好維護
加一個檢測值A,
如果任一科缺考,
A=0,反之A=1
然後就總級分*A排序即可
A用COUNTIF檢測分數儲存格就可以簡單判定。
還有不用執著在單一儲存格內完成所有工作....
人類中最卑鄙無恥的是, 權力擁有者和諂媚權貴者, 藏身安全場所歌詠戰爭, 用愛國心將無知者送往戰場!
雖然個人不太喜歡增加多餘欄位輔助,
但以乎只有這種方式可最簡化公式,
且日後修改或除錯也比較容易!

(欄位 K 可隱藏不顯示)
My Interior Knowledge is Extraordinaire
L2 = IF(COUNTIF(D2:J2,"-")>0,"缺考",RANK(K2,K$2:K$13,0))
向下複製公式

KiKiUnicorn

[0分]大哥....6個人排序,卻出現6、7、11名,你不覺得怪怪的嗎?

2023-12-11 17:58
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?