返回列表 上一主題 發帖

[發問] 如何自動列出教師授課名單

L2陣列公式
=IF(ROW(A1)>COUNTIF($C$2:$C$25,$K$2),"",INDEX(A:A,SMALL(IF($C$2:$C$25=$K$2,ROW($2:$25),""),ROW(A1))))
學海無涯_不恥下問

TOP

回復 4# trainee
此言差矣!
進階篩選才是正道
陣列函數若是遇到大資料量時將造成牛步
只是提出來供大家參考而已
要在實務應用我也是推薦進階篩選
學海無涯_不恥下問

TOP

本帖最後由 Hsieh 於 2011-7-10 23:46 編輯

回復 8# onegirl0204

chin15在9#已經回復得很清楚,進階篩選是很好的基本操作
2#trainee 的作法只是將進階篩選動作用VBA來進行
而最差的就是我用陣列公式來完成
至於公式的作法,沒有甚麼特別的
唯有對各個基本函數了解後
針對個案需求去思考
你要從別人的公式中去了解個函數的作用
整理出甚麼狀況有哪些函數能派上用場
然後想辦法從已知的條件去求得個函數的引數
以此例=IF(ROW(A1)>COUNTIF($C$2:$C$25,$K$2),"",INDEX(A:A,SMALL(IF($C$2:$C$25=$K$2,ROW($2:$25),""),ROW(A1))))
COUNTIF($C$2:$C$25,$K$2)意在算出符合條件的個數
如果列號超出個數就讓儲存格顯示為空字串
SMALL(IF($C$2:$C$25=$K$2,ROW($2:$25),""),ROW(A1))
這是從C欄中找到符合條件的位置就傳回該列號否則傳回空字串,這一連串的數字與空字串中,找到最小數值
所以當公式向下複製時ROW(A1)會變成ROW(A2),就傳回第2小的數值
再利用INDEX去找到A欄的第幾列作為傳回的結果
你可利用公式稽核來查看整個公式的運作順序
就會增進你的思考能力
所以要說從哪裡學習,本論壇應該是個不錯的地方
但是,最後還是要由自己的思考來完成
學海無涯_不恥下問

TOP

        靜思自在 : 人要自愛,才能愛普天下的人。
返回列表 上一主題