Страницы: 1
RSS
Вычисление формулы массива в коде VBA
 
Здравствуйте!

Обычные формулы Экселя можно обработать непосредственно в коде VBA через  Application.WorksheetFunction , ну или через просто  Application.
Возможен ли такой фокус с формулами массива   ?
 
Возможен. А можно формулу массива заменить циклом, например
Согласие есть продукт при полном непротивлении сторон
 
Столбенко Владислав, возможен, но не всегда. Чтобы формула воспринимались как массивная, "оберните" массив в функцию ИНДЕКС - сначала добейтесь, чтобы формула на листе работала как немассивная.
Примеры можно поискать по Evaluate+INDEX
 
Sanja  Заменить формулу массива конечно можно и циклом и массивами VBA в придачу, но заинтересовала возможность заменить много - несколько строк одной.

Казанский " Evaluate+INDEX " тема интересная, буду копать, спасибо, но что-то пока неклеится.

В конкретном у меня случае замысел такой :
Есть формула массива :
{ =МАКС(СЧЁТЕСЛИ(A1:A9;A1:A9)) }
Она позволяет определить если в  диапазоне есть НЕуникальные значения  (возвращается значение больше 1, если все в диапазоне уникально то 1), функция возвращает одно значение (не массив).
Но вот как это реализовать через  Evaluate   ?  
Изменено: Столбенко Владислав - 10.02.2016 11:59:31
 
[B1].FormulaArray = "=Max(CountIf(A1:A9,A1:A9))"
 
Столбенко Владислав, вот эквивалентная немассивная формула
Код
=МАКС(ИНДЕКС(СЧЁТЕСЛИ(A1:A9;A1:A9);))
соот-но
Код
n = Evaluate("MAX(INDEX(COUNTIF(A1:A9,A1:A9),))")
Страницы: 1
Наверх