WorksheetFunction.AverageIf包含基于cell.interior.color的条件的范围

问题描述 投票:0回答:1

我试图找到具有未定义的数字(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])"
excel vba conditional average worksheet-function
1个回答
0
投票

没有足够的回复评论(抱歉!),但这里有一些想法:

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”更改为您引用的任何工作表

© www.soinside.com 2019 - 2024. All rights reserved.