WorksheetFunction.AverageIf 范围以包含基于 cell.interior.color 的条件
WorksheetFunction.AverageIf of a range to include condition based on cell.interior.color
我正在尝试查找具有未定义数量 (i) 值的列的平均值(范围可能在第 I 列第 24 行的 3-20 个单元格之间,直到未定义数量 - j = 23 + i
).以前的代码仅包含标准平均函数。
现在,我希望它对给定范围内的那些单元格进行平均,只包括建议范围内的那些单元格。因此,忽略高于和/或低于 LFe、UFe 的已识别异常值。该平均值的位置是 Range("E" & m)
.
这在给定的工作表函数中是否可行?如果是这样,我需要更改什么才能使其正常工作?
我已经尝试使用现有的解决方案,基于 'average only cells that are positive' 或 'only those that do not include 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))
哪个returns:#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:$E$" & j & ",$E:$E$" & j & ","">" & LFe & """,$E:$E$" & j & ",""<" & UFe & """)"
只需将 "Sheet1" 更改为您要引用的 sheet
我正在尝试查找具有未定义数量 (i) 值的列的平均值(范围可能在第 I 列第 24 行的 3-20 个单元格之间,直到未定义数量 - j = 23 + i
).以前的代码仅包含标准平均函数。
现在,我希望它对给定范围内的那些单元格进行平均,只包括建议范围内的那些单元格。因此,忽略高于和/或低于 LFe、UFe 的已识别异常值。该平均值的位置是 Range("E" & m)
.
这在给定的工作表函数中是否可行?如果是这样,我需要更改什么才能使其正常工作?
我已经尝试使用现有的解决方案,基于 'average only cells that are positive' 或 'only those that do not include 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))
哪个returns:#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:$E$" & j & ",$E:$E$" & j & ","">" & LFe & """,$E:$E$" & j & ",""<" & UFe & """)"
只需将 "Sheet1" 更改为您要引用的 sheet