相關函數:陣列公式 / COUNTIF() / MAX() / ROW()
前一篇文章利用陣列公式在一堆請假清單中列出曾經請過假的人,這次我們來找找,誰是請最多假的「請假大王」?
##CONTINUE##
要計算次數,當然要利用函數 COUNTIF(),如上圖 C 欄,C2 公式為=COUNTIF($A$2:$A$11,A2)
把公式直接往下複製,就可以算出每個人的請假次數。C2:C11 形成一個陣列,我們可以在這個陣列上做變化。
例如,請假次數的最大值,D5 陣列公式為
=MAX(COUNTIF($A$2:$A$11,A2:A11))
那麼,這個請假次數最多的請假大王,到底是誰呢?D2 陣列公式為
=INDIRECT("A"&MAX(IF
(COUNTIF($A$2:$A$11,A2:A11)=MAX(COUNTIF($A$2:$A$11,A2:A11)),
ROW(A2:A11),
"")))
我們來好好剖析這個公式。
- 最內層的 COUNTIF($A$2:$A$11,A2:A11) 就是每個人的請假次數,也就是 C2:C11 這個陣列。
- MAX(COUNTIF($A$2:$A$11,A2:A11)),就是請假次數的最大值。
- IF(COUNTIF(...)=MAX(...), ROW(A2:A11),"") 則是說,如果某個人的請假次數等於最大值,就記下它所在的列數 ROW(),否則就記下空白。經過這個步驟,就可以只留下請假大王的所在位置。
- 最後用外層的 MAX() 把這個列數取出來,再用 INDIRECT() 把位置轉成內容,完成!
這個公式的架構,其實和之前高低標的公式很像,先把陣列公式利用
IF(條件式,留下想要的值,空白)
過濾成另一個陣列二,再從陣列二中取出想要的值,這裡是用 MAX(),高低標那裡是用 AVERAGE()。相同的架構,可以應用在各種地方,發揮你的想像力吧!
實用上,C 欄可以整欄去掉,這裡只是用來說明陣列而已。
1 意見:
網主你好,請問如果有兩個請假大王,當月請假的天數一樣,上文提供的公式可以挑出兩個人名嗎?若否,該如何處理?
謝謝!
張貼留言