Я пытаюсь найти среднее значение для столбца с неопределенным числом (i) значений (диапазон может быть от 3 до 20 ячеек в столбце I, строка 24 до неопределенного числа - j = 23 + i
). Код ранее включал только стандартную функцию усреднения.
Теперь я бы хотел усреднить те ячейки в заданном диапазоне, включая только те ячейки в предлагаемом диапазоне. Следовательно, игнорируя идентифицированные выбросы, которые выше и / или ниже LFe, UFe. Расположение этого усредненного значения составляет Range("E" & m)
.
Возможно ли это даже в данной функции рабочего листа? И если да, что мне нужно изменить, чтобы это работало?
Я пытался использовать существующие решения, основанные на таких условиях, как «в среднем только положительные ячейки» или «только те, которые не включают N / A», но, похоже, он не работает.
'Identifying outliers based on interquartile range
qe1 = Application.Quartile(Range("E24:E" & j), 1)
qe3 = Application.Quartile(Range("E24:E" & j), 3)
IQRe = qe3 - qe1
UFe = qe3 + (IQRe * 1.5)
LFe = qe3 - (IQRe * 1.5)
'[EDIT] Currently I have it as follows:
Range("E" & m).Value = Application.WorksheetFunction.AverageIfs(Range("E24:E" & j), "<" & UFe, Range("E24:E" & j), ">" & LFe, Range("E24:E" & j))
Что возвращает: # ЗНАЧЕНИЕ! без функции .WorksheetFunction и «error run» 424 «Требуется объект», как написано выше.
Единственная опция, которая работала, НО без моих диапазонов переменных, это форматировать ее следующим образом: (Как это иначе можно адаптировать для работы с диапазонами моих переменных, включая 'j' и т. Д .?)
Range("E" & m).Select
ActiveCell.FormulaR1C1 = "=AVERAGEIF(R[-6]C[4]:R[-3]C[4],"">""& 4.3,R[-6]C[4]:R[-3]C[4])"