如果某行中的数字低于 1000,我需要用该行中数字的平均值替换它们,该平均值不包括行中低于 1000 的数字。
我已经使用此代码成功计算了平均值=AVERAGE(IF(O3:V3>=1000, O3:V3))
,但是,当我尝试用计算出的平均值替换低于 1000 的数字时,我收到#spill error
。这是我使用的代码:=IF(O3:V3<1000, W3, O3:V3)
。平均值位于“W”列中。
答案1
您可以使用如下公式来计算:
=IF(O3:V3>=1000,O3:V3,AVERAGEIF(O3:V3,">=1000"))
但结果将在另一行。
如果您希望结果在同一位置,则应使用 vba。
如果您想用计算的平均值替换实际值,您应该选择您的数据并运行此代码:
Sub UpdateSmallValues()
Dim avg As Double, res As Range
' operate on a selected range
avg = WorksheetFunction.AverageIf(Selection, ">=1000")
For Each res In Selection
If res.Value < 1000 Then res.Value = avg
Next res
End Sub