Страницы: 1
RSS
VBA: максимум по условию
 
Добрый день Уважаемые Эксперты

Порой в экселе приходится сталкиваться с несовсем стандартными задачами.
В частности, бывает необходимо найти максимум по условию.
В файле примера есть два столба:
-  Массив (А1:А11) буквенное обозначение,
-  Массив (Б1:Б11) некое случайное число.
-  Ячейка F1 значение "Б", контрольное значение

на странице в версии 2010, наиболее удобно это сделать следующей формулой:
Код
{=МАКС(ЕСЛИ((A1:A11)=F1;B1:B11))}

Вопрос как формулу описанную чуть выше записать в VBA?
Я предположил, что наиболее верно это сделать следующим образом:
Код
Cells(5, 4) = [WorksheetFunction.Max(WorksheetFunction.If(Range("A1:A11")=Cells(1, 6), Range("B1:B11"))]
На что в ячейке D5 получил ответ "#ЗНАЧ!". Что говорит о моей ошибке.
Прошу помочь разобраться.

Благодарю Вас.
Изменено: IgorBoot - 11.07.2018 18:36:50
 
Код
Range("D5").FormulaArray = "=MAX(IF((A1:A11)=F1,B1:B11))"
 
Уважаемый U_M0KRH.
Благодарю Вас за ответ. Предложенная Вами конструкция работает, только есть одно НО.
Конструкция предложенная Вами  выводит формулу на лист, что потребует последующего перерасчета всего листа.
В рамках этой задачи это конечно вообще никак не ощущается. Но есть вариант произвести расчет именно ходе выполнения кода?
Еще раз Благодарю Вас
 
Разобрался сам. Ответ который меня удовлетворил:
Код
Cells(5, 4) = [Max(If(A1:A11=F1,B1:B11))]
Если кто вдруг сюда зайдет в попытке найти ответ на вопрос поставленный в Теме, то пользуйтесь.))
 
Цитата
IgorBoot написал: Конструкция... потребует последующего перерасчета всего листа.
Ваш вариант при любом изменении искомого значения потребует последующего перезапуска макроса. И "Если кто вдруг сюда зайдет в попытке найти ответ на вопрос поставленный в Теме", то обнаружит два варианта, и не обязательно Ваш ему подойдет :)
Страницы: 1
Наверх