Как найти наименьшие значения в диапазоне автофильтров? - PullRequest
1 голос
/ 28 июля 2010

У меня есть столбец с двумя диапазонами значений, в частности, 0-30000 и 60000+, из которого мне нужно извлечь два наименьших значения в диапазоне 60000.

Единственный найденный мной способ использовать AutoFilter для получения подмножества необходимых данных для извлечения. Моя проблема в том, что функция автофильтра не возвращает ссылку на диапазон. Если бы это было так, я мог бы использовать функцию SMALL для получения искомых значений.

Как я могу выполнить фильтрацию и извлечение двух наименьших значений из этих отфильтрованных данных?

Ответы [ 3 ]

1 голос
/ 28 июля 2010

Я отказался от идеи использования автофильтра.Вместо этого я выбрал комбинацию SMALL и цикл.

Cells(2, secIdCol).Select
Set valsRange = Range(Selection, Selection.End(xlDown))

For Each val In valsRange
    If val.Value < 599999 Then
        val.Value = "" // I don't save changes 
        val1 = Application.WorksheetFunction.Small(valsRange, 1)
        val2 = Application.WorksheetFunction.Small(valsRange, 2)
    End If
Next val
0 голосов
/ 02 августа 2010

Вот другой подход без использования функции SMALL листа:

With Worksheets("Sheet1")
    Dim lastRow As Long
    lastRow = .Cells(2, secIdCol).CurrentRegion.Rows.Count + 1

    Dim rowIndex As Long
    Dim currentValue As Long
    Dim val1 As Long
    Dim val2 As Long

    ' Set val1 to maximum possible long value
    val1 = 2147483647
    For rowIndex = 2 To lastRow
        currentValue = CLng(.Cells(rowIndex, secIdCol).Value)
        If (currentValue > 59999) Then
            If (currentValue < val1) Then
                val2 = val1
                val1 = currentValue
            End If
        End If
    Next rowIndex
End With

MsgBox val1 & " | " & val2
0 голосов
/ 28 июля 2010

Не думаю, что вам обязательно нужен VBA. Рассматривали ли вы формулу массива, введенную с помощью ctrl + shift:

   =MIN(IF(A1:A7>2999,A1:A7))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...