2012-01-06 9 views
-1

Мне нужна помощь, пишущая цикл, который находит 10 самых высоких значений в столбце «F». Для каждого из 10 самых высоких значений, которые были выбраны, я хочу вставить это значение (а также связанные значения в столбцах C, D и E) в другую таблицу.Выберите 10 лучших максимальных значений

Благодаря

+4

Данные - Фильтр - Автофильтр. Нажмите стрелку вниз. Выберите «Top 10 ...». – GSerg

ответ

4

Aggregate функция предназначена игнорировать значение ошибок (среди прочего). Вот SUBAggregate и Large получить 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

+0

Рад помочь, и добро пожаловать в СО. Если это ответит на ваш вопрос, пожалуйста, примите его (нажмите галочку) –