Страницы: 1
RSS
Ссылка на ячейку найденного максимума диапазона
 
Всем добрый день!

Не знаю как получить с помощью vba адрес ячейки максимума диапазона.
Диапазон получаю от пользователя, сохраняю в переменной, сам максимум нахожу, а вот дальше..

Подробнее по семплу:
Макрос запрашивает у пользователя через Application.InputBox диапазон % (B) по дням у конкретного месяца, диапазон сохраняется в переменной rR
Этот диапазон несвязный (на примере января - пользователь выделит то что подсвечено желтым, значения Week не должны участвовать в расчете)
Далее макрос должен найти максимальное значение из диапазона rR и вернуть день (из столб A), в который этот макс был достигнут, на примере января - это ячейка A18, день = 14
Само значение максимума ищется элементарно через WorksheetFunction.Max(rR). Но это просто значение, а не ссылка на ячейку листа.
Вопрос - как получить на листе именно адрес ячейки с максимумом из диапазона?
Проблема: я не могу использовать MATCH, потому что диапазон несвязный, и не могу полностью выделять столбец B, потому что ища в нем макс для февраля, он выдаст строку 37 (января) вместо нужной мне строки 49 (февраля).
 
Код
=ИНДЕКС(C1;ПОИСКПОЗ(МАКС(C2);C2;))
извините, немного сложнее)
Код
=ИНДЕКС(ИНДЕКС(C1;ПОИСКПОЗ(R[-1]C;C1;)):ИНДЕКС(C1;ПОИСКПОЗ(R[-1]C;C1;)+35);ПОИСКПОЗ(МАКС(ИНДЕКС(C2;ПОИСКПОЗ(R[-1]C;C1;)):ИНДЕКС(C2;ПОИСКПОЗ(R[-1]C;C1;)+35));ИНДЕКС(C2;ПОИСКПОЗ(R[-1]C;C1;)):ИНДЕКС(C2;ПОИСКПОЗ(R[-1]C;C1;)+35); ))
Изменено: Ігор Гончаренко - 13.02.2019 14:06:08
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, спасибо, но это не подходит, вы не прочитали описанные мною условия
Цитата
Проблема: я не могу использовать MATCH, потому что диапазон несвязный, и не могу полностью выделять столбец B, потому что ища в нем макс для февраля, он выдаст строку 37 (января) вместо нужной мне строки 49 (февраля)
 
Код
=МАКС(ИНДЕКС(B:B;ПОИСКПОЗ("Feb";A:A;0)):ИНДЕКС(B:B;ЕСЛИОШИБКА(ПОИСКПОЗ("Mar";A:A;0);10000)))
но для февраля, кстати, максимум тоже 98. В строке 64 это четко видно. А если надо именно при помощи кода VBA - то здесь вообще сложностей не вижу: цикл до тех пор, пока не упретесь в нужный месяц в столбце А - запоминаете номер строки. Далее цикл пока не найдете следующее значение, отличное от Week. Так же запоминаете - вот Вам и начало и конец данных для определения макс.числа.
Да, и если нужна прямо ссылка на ячейку - в три раза проще. Идете циклом по полученному rR(о котором Вы пишите в описании) и проверяете значение каждой его ячейки, выискивая макс.значение:
Код
Sub FindMaxCell()
    Dim rr As Range, rc As Range, rMax As Range
    
    Set rr = Selection 'просто для демострации, лень InputBox писать
    Dim dblMax#
    dblMax = Application.Max(rr)
    For Each rc In rr.Cells
        If rc.Value = dblMax Then
            Set rMax = rc
            Exit For
        End If
    Next
    
    MsgBox "Адрес ячейки с макс.значением: " & rMax.Address
End Sub
Изменено: Дмитрий(The_Prist) Щербаков - 13.02.2019 14:17:11
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Тоже накидал макрос
 
Дмитрий(The_Prist) Щербаков, огромное вам спасибо!
Страницы: 1
Наверх