Excel VBA: Минимум диапазона

Автор noname6171, 03 апреля 2017, 19:51

noname6171

В Экселе есть функция наименьший из диапазона =НАИМЕНЬШИЙ(A1:J10,1).
Наверно что-то похожее должно быть и в VBA, но я не нашел.

Есть ли какие встроенные средства нахождения Min, Max в массиве, ренже без организации перебора.

Администратор

В VBA есть объект для работы с эксель-функциями из макроса: WorksheetFunction.
В коде пишите "WorksheetFunction", затем ставите точку и выбираете нужную функцию.
Некоторые функции работает только с эксель-ячейками, другие функции работают и с эксель-ячейками и с vba-массивами.
Некоторых функций в объекте "WorksheetFunction" нет.

Если у вас в экселе функции на русском языке, то чтобы узнать, какая функция в объекте "WorksheetFunction" соответствует эксель-функции, нужно сделать так:
1) поставьте курсор-рамку на ячейку с формулой;
2) перейдите в VBA - View Immediate Window - внизу появится область - в эту область вставьте этот код, поставьте курсор после кода и нажмите "Enter":
print activecell.Formula
3) после чего вы будете знать, как эта функция пишется на английском и эту функцию можно подставить в объект "WorksheetFunction".

Функция "НАИМЕНЬШИЙ" - это SMALL.

Перехватить ошибки, которые возвращают функции, используемые в "WorksheetFunction", можно, только используя "On Error":

Sub Макрос()
    On Error Resume Next
        ' Вывод результата в View - Immediate Window.
        Debug.Print WorksheetFunction.Small(Range("A1:A2"), 1)
    On Error GoTo 0
End Sub