2012-01-06 54 views
-1

我需要幫助編寫一個循環,在列「F」中找到10個最高值。對於所選的10個最高值中的每一個,我都希望將該值(以及C,D和E列中的關聯值)粘貼到另一個電子表格中。選擇前10個最大值

由於

+4

數據 - 篩選 - 自動篩選。點擊下拉箭頭。選擇「前10名...」。 – GSerg 2012-01-06 17:42:31

回答

4

Aggregate功能被設計成忽略誤差值(除其他外)。這裏有一個SUBAggregateLarge獲得threashold到triggger您的副本代碼

Sub GetTop10(r As Range) 
    Dim v As Variant 
    Dim t As Variant 
    Dim i As Long 

    ' 14 = function LARGE 
    ' 6 = ignore error values 
    ' 10 = get 10'th largest value 
    t = Application.WorksheetFunction.Aggregate(14, 6, r, 10) 
    v = r 
    For i = 1 To UBound(v, 1) 
     If Not IsError(v(i, 1)) Then 
      If v(i, 1) >= t Then 
       ' copy r.cells(i,-2).resize(1,4) to your other sheet 
      End If 
     End If 
    Next 
End Sub 
+0

這是完美的,謝謝。 – rjk 2012-01-06 20:26:03

+0

很高興能夠提供幫助,歡迎來到SO。如果這回答你的問題,請接受它(點擊打勾) – 2012-01-06 20:30:58