返回列表 上一主題 發帖

怎麼用函數求出第三大的數 ?

回復 6# wqfzqgk
  1. Function maxk(rng As Range, k As Integer)
  2. Set d = CreateObject("scripting.dictionary")
  3. Dim rngg As Range
  4. For Each rngg In rng
  5. d(rngg.Value) = ""
  6. Next
  7. maxk = Application.WorksheetFunction.Large(d.keys, k)
  8. End Function
複製代碼
這樣不需用ON ERROR RESUME NEXT來避免錯誤
學海無涯_不恥下問

TOP

dictionary物件要使用add方法可配合exists先檢查是否索引值已經存在
個人並不贊同使用on error陳述式來避開錯誤
只有在不確定錯誤產生狀況才使用on error resume next
  1. Function maxk(rng As Range, k As Integer)
  2. Set d = CreateObject("scripting.dictionary")
  3. Dim rngg As Range
  4. For Each rngg In rng
  5. If d.exists(rngg.Value) = False Then d(rngg.Value) = ""
  6. Next
  7. maxk = Application.WorksheetFunction.Large(d.keys, k)
  8. End Function
複製代碼
學海無涯_不恥下問

TOP

回復 12# gong


    若C欄中的數值很大時如超過65536
恐怕就無法使用此法了
學海無涯_不恥下問

TOP

回復 16# zz5151353

拍手叫好.gif
原來FREQUENCY的bins_array是不需要連續數值及單一性
這函數很少去用他值得研究看看
學海無涯_不恥下問

TOP

回復 24# Luc


    討論不重複清單
學海無涯_不恥下問

TOP

        靜思自在 : 並非有錢魷是快樂,問心無愧心最安。
返回列表 上一主題