Функции массива Excel в таблицах полезны. Например, для вычисления среднего значения sin в массиве A1:A5 я ввожу следующее, что хорошо работает:
{=AVERAGE(SIN(A1:A5))}
Теперь я хотел бы создать функцию в VBA, которая выполняет эту работу, что-то вроде:
Function MyFunction(r As Variant) As Variant ' r is the range, e.g. A1:A5 as above
MyFunction = WorksheetFunction.Average(Sin(r))
End Function
Эта функция должна приводить к одному значению, но она не работает (независимо от того, вводю ли я ее как нормальную или массивную формулу в ячейку Excel). Я думал, что проблема может быть в том, что функция sin VBA отличается от функции sin рабочего листа, но заменяет sin на WorksheetFunction.Грех тоже не работает.
Конечно, можно узнать количество значений, написать цикл, который хранит значения sin(r[i=1..n])
во временной переменной массива, а затем вычислить среднее значение, но я ищу более гибкий и эффективный решение.