我试图找到具有未定义的数字(i)值的列的平均值(范围可能在第I列中的3-20个单元格之间,第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))
返回:#VALUE!没有.WorksheetFunction,并且'运行错误'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])"
没有足够的回复评论(抱歉!),但这里有一些想法:
1)正如SJR所提到的,如果有一个数值,你就是基于颜色编码,你可以在代码中使用它而不是颜色。我认为UFe和LFe是上限和下限。所以你可以让公式的单元格通过公式自动化UFe和LFe,然后使用“AVERAGEIFS”。
2)或者,您可以将变量集成到“.formula”中,例如:
Sheet1.Range("E" & m).Formula = "=AVERAGEIFS($E$24:$E$" & j & ",$E$24:$E$" & j & ","">" & LFe & """,$E$24:$E$" & j & ",""<" & UFe & """)"
只需将“Sheet1”更改为您引用的任何工作表