我有很好的计算我想要的平均值的代码。但是现在我希望它只在引用的单元格包含值时才运行计算。我完全不知道如何将条件提供给我的代码。
Dim i%
Dim rng As Range
Dim last&
last = Range("A65536").End(xlUp).Row
For i = 2 To last
Range("F" & i).FormulaR1C1 = _
"=AVERAGE(R[-4]C[-2],R[-2]C[-2],RC[-2],R[2]C[-2],R[5]C[-2],)"
Next i
End Sub
我尝试过使用AVERAGEIF,但我也无法让它工作。每当我尝试使用函数向导设置它时,范围给出了范围内的#Value。所以我不知道如何让它在VBA中运行。
任何和所有帮助将不胜感激。
*编辑 - 我只希望平均线出现在单元格中,但我想在进行计算之前测试单元格的值。 (Siddharth,无论如何,谢谢你的回答!)澄清:
Dim i%
Dim rng As Range
Dim last&
last = Range("A65536").End(xlUp).Row
For i = 2 To last
'test for all cells having values here
Range("F" & i).FormulaR1C1 = _
"=AVERAGE(R[-4]C[-2],R[-2]C[-2],RC[-2],R[2]C[-2],R[5]C[-2],)"
Next i
End Sub
***编辑2:为了更清楚我正在寻找什么,我想要这样的事情:
Dim i%
Dim last&
last = Range("A65536").End(xlUp).Row
For i = 2 To last
While Range("D" & i - 4).Value <> "" And Range("D" & i + 4).Value <> ""
Range("F" & i).FormulaR1C1 = _
"AVERAGE(R[-4]C[-2],R[-2]C[-2],RC[-2],R[2]C[-2],R[5]C[-2]))"
Wend
Next i
但我的同时声明给了我麻烦,因为当我在代码中达到这一点时,我一直收到错误。我也试过了:
While Range("D" & i - 4 And "D" & i + 4).Value <> ""
这给了我运行时错误13:类型不匹配。
答案 0 :(得分:1)
如果我理解正确,那么您需要检查范围内的单元格数是否等于填充值的数量。例如
Sub a()
Dim i%
Dim rng As Range
Dim last&
last = Range("A65536").End(xlUp).Row
For i = 2 To last
Range("F" & i).FormulaR1C1 = "=if(" & _
"Rows(R[-4]C[-2])+Rows(R[-2]C[-2])+Rows(RC[-2])+Rows(R[5]C[-2])<>" & _
"COUNTA(R[-4]C[-2],R[-2]C[-2],RC[-2],R[2]C[-2],R[5]C[-2],)-2,""Blank""," & _
"AVERAGE(R[-4]C[-2],R[-2]C[-2],RC[-2],R[2]C[-2],R[5]C[-2],))"
Next i
End Sub