Я пытаюсь написать функцию в VBA, которая рассчитает стандартное отклонение и диапазон трех чисел. Если все числа определены как ---, то funtion должен выводить --- как ответ. Если ВСЕ 3 из них не являются --- тогда стандартное отклонение или диапазон следует рассчитывать с оставшимся числом, в то время как IGNORING --- ---. Цифры вводятся пользователем. Вот код, который я написал для расчета диапазона и стандартного отклонения. Используя встроенную функцию excel WS, которая уже игнорирует входные данные, если они не являются номерами, я смог обойти этот сложный бит. Однако, как видно, мне не удалось получить код для распознавания, когда все три --- для регистрации как ---.Код VBA для стандартного отклонения и диапазон
ФУНКЦИИ ДЛЯ ВЫЧИСЛЕНИЯ RANGE -------------------------------
Функция Диапазон (ParamArray ObservedValues ())
Хотя ObservedValues (I) = "---" Range = "---" Венд
Max = Application.WorksheetFunction.Max(ObservedValues)
Min = Application.WorksheetFunction.Min(ObservedValues)
Range = Max - Min
End Function
ФУНКЦИИ ДЛЯ ВЫЧИСЛЕНИЯ Волатильность (несколько попыток)
ПЕРВЫЙ ПОПЫТКА
Функция SD (ObservedValueA, ObservedValueB, ObservedValueC, ObservedMean)
Если ObservedValueA = "---" И ObservedValueB = " ---»И ObservedValueC = "---" Тогда SD = "---" End If
If ObservedValueA <> "---" Then
a = 1
x = ObservedValueA - ObservedMean
Else
a = 0
x = 1
End If
If ObservedValueB <> "---" Then
b = 1
y = ObservedValueB - ObservedMean
Else
b = 0
y = 1
End If
If ObservedValueC <> "---" Then
c = 1
Z = ObservedValueC - ObservedMean
Else
c = 0
Z = 1
End If
SD = Кв ((1/(A + B + C)) * х^2 * у^2 * Z^2)
End Function
ВТОРОЙ ПОПЫТКИ
Функция SD (ParamArray Number_Input())
Хотя Number_Input = "---" SD = "---" Венд SD = Application.WorksheetFunction.StDev (Number_Input)
End Function
Спасибо Edouard за вашу помощь. Однако это не полностью решает мою проблему, цифры, которые пользователь вводит, не всегда будут в последовательном порядке, как в A1: A3 часто, когда они будут случайными местами на листе, например G4, Y2 и J17. Этот расчет нужно будет делать много раз для меняющихся клеток. Вот почему я написал свой код, чтобы переменные определялись выбором ячейки. – Andrea