Добрый день! Необходимо найти максимальное значение для введенного аргумента, среди нескольких. Функция ВПР находит первое попавшееся значение, что не является решением проблемы. Пробовал применять из аналогичных тем функции Суммпроизв, Просмотр, но не смог их настроить толком - все равно находит первое попавшееся значение...
Добрый день! Необходимо найти максимальное значение для введенного аргумента, среди нескольких. Функция ВПР находит первое попавшееся значение, что не является решением проблемы. Пробовал применять из аналогичных тем функции Суммпроизв, Просмотр, но не смог их настроить толком - все равно находит первое попавшееся значение...Мурад
МВТ, спасибо, работает! А есть, в принципе, решение без использования массивных формул или сводных таблиц? Источник данных очень большой может быть часто....
МВТ, спасибо, работает! А есть, в принципе, решение без использования массивных формул или сводных таблиц? Источник данных очень большой может быть часто....Мурад
Тогда макросом (можно через FIND - FINDNEXT сделать) [vba]
Код
Function MaxFromRange(ByVal Rng As Range, aKey As Variant) As Variant Dim Ok As Boolean If Rng.Columns.Count <> 2 Then MaxFromRange = CVErr("#N/A") Exit Function End If With Rng For I = .Row To .Rows.Count If Cells(I, .Column).Value = aKey Then If Not Ok Then MaxFromRange = Cells(I, .Column + 1) Ok = True Else MaxFromRange = Application.WorksheetFunction.Max(MaxFromRange, Cells(I, .Column + 1)) End If End If Next I End With If Not Ok Then MaxFromRange = CVErr("#N/A") End Function
[/vba]
Тогда макросом (можно через FIND - FINDNEXT сделать) [vba]
Код
Function MaxFromRange(ByVal Rng As Range, aKey As Variant) As Variant Dim Ok As Boolean If Rng.Columns.Count <> 2 Then MaxFromRange = CVErr("#N/A") Exit Function End If With Rng For I = .Row To .Rows.Count If Cells(I, .Column).Value = aKey Then If Not Ok Then MaxFromRange = Cells(I, .Column + 1) Ok = True Else MaxFromRange = Application.WorksheetFunction.Max(MaxFromRange, Cells(I, .Column + 1)) End If End If Next I End With If Not Ok Then MaxFromRange = CVErr("#N/A") End Function