作者newacc (XD)
看板Office
標題Re: [算表] 計算範圍內出現次數前幾名
時間Fri Feb 8 18:36:53 2013
: 軟體:EXCEL
: 版本:2007
: 請問是否有辦法自動計算A2:C5內出現數字最多的前三個並顯示出來
: (不是用countif去計算次數)
: 例如:
: A B C E F G
: 123 5666 483 第一名 3次 48
: 4563 4564 4513 第一名 3次 456
: 48 48 4513 第三名 2次 4513
: 456 833 456 第四名 ... ...
: 45 48 456
: 但是F~G的範圍內是要自己顯示 並非用F1=count(A2:C5,G1) 這樣子算
F1=LARGE(COUNTIF($A$1:$C$5,$A$1:$C$5),1)
F2=LARGE(COUNTIF($A$1:$C$5,$A$1:$C$5),SUM(1,$F$1:F1))
用F2複製到整個F欄
G1=SMALL(IF(COUNTIF($A$1:$C$5,$A$1:$C$5)=F1,$A$1:$C$5,99999),
1+(COUNTIF($F$1:F1,F1)-1)*F1)
直接用G1表製到整個G欄即可
F欄解釋:將每個數字出現次數列成一個陣列,用LARGE取出最大、次大...的那一項
同時因為最大會有好幾項,因此F2的LARGE第二個參數要修改成SUM(1,$F$1:F1)
G欄解釋:用IF比對每個數字出現數量和F欄數量
相同則傳回該數字,不同則傳回99999
再用SMALL挑出需要的值
[若原始資料會比99999大的話,請將99999改成更大的數字]
公式皆為陣列公式,輸入完畢後要按ctrl+shift+enter完成
範例檔:
http://goo.gl/zrVDG
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.85.101.71
※ 編輯: newacc 來自: 219.85.101.71 (02/08 18:37)
→ soyoso: small是取出數字,不會對邏輯值,所以,99999就不需要,那 02/20 13:48
→ soyoso: 也就不用去想原始資料會比99999大還是要改成更大的數字 02/20 13:48
→ soyoso: 就讓不為f1的回傳邏輯值就好 02/20 13:49
→ newacc: 今天心血來潮翻我自己的古文才發現S大的回應XD 07/04 19:59
→ newacc: 學習了XD 07/04 19:59
→ newacc: 2021/7/4 XD 07/04 19:59