excel VBA中如何对含循环变量单元格区域求平均值?
各位大侠:请教各位点小问题:如何使用含循环变量单元格区域求平均值?目的:将sheet2中的数据阵列在周围各10个单元格内求average,然后放在sheet3中的对应单元...
各位大侠:请教各位点小问题:如何使用含循环变量单元格区域求平均值?
目的:将sheet2中的数据阵列在周围各10个单元格内求average,然后放在sheet3中的对应单元格。
下面是我写的部分代码
for i=1 to 100
for j=1 to 100
Sheets("sheet3").Cells(i, j) = Application.WorksheetFunction.Average(Sheet2.Range(Cells(i - 10, j - 10), Cells(i + 10, j + 10))) 展开
目的:将sheet2中的数据阵列在周围各10个单元格内求average,然后放在sheet3中的对应单元格。
下面是我写的部分代码
for i=1 to 100
for j=1 to 100
Sheets("sheet3").Cells(i, j) = Application.WorksheetFunction.Average(Sheet2.Range(Cells(i - 10, j - 10), Cells(i + 10, j + 10))) 展开
2个回答
展开全部
这种写法肯定是错误的。
Sheet2.Range(Cells(i - 10, j - 10), Cells(i + 10, j + 10)))
虽然你的Range加了Sheet2限定语句,但是后面的cells(i-10,j-10),cells(i+10,j+10)都没有加限定语句,如果你的代码是在Sheet3工作表中,那么就表示sheet3.cells(i-10,j-10)了。
再则,当i=1的时候,i-10=-9,那么这样的单元格是不存在的。最小单元格行只能是1,列也是1。
所以要改,你要注意两点:
Dim m as Long,n as Integer
for i=1 to 100
for j=1 to 100
With Sheet2
If i < 11 and j < 11 Then
m = 1: n =1
Elseif i < 11 and j >= 11 Then
m = 1: n = j
Elseif i >= 11 and j < 11 Then
m = i: n = 1
ElseIf i >= 11 and j >=11 Then
m = i: n = j
End If
Sheets("sheet3").Cells(i, j) = Application.WorksheetFunction.Average(.Range(.Cells(m,n), .Cells(i + 10, j + 10)))
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询