|
本帖最后由 qiaodong64 于 2017-4-24 17:26 编辑
数据格式是这样的,一共三列,需要每12行求一个平均,就是A2~A13,求平均然后放入D2,A14~A25求平均放入D3;B2~B13求平均放入E2,B14~B25求平均放入E3,后面以此类推。
出现了第一个工作簿算出的平均值在range(D1~D29),然后到了第二个工作簿中的平均值在range(D30~D59)并且D2~D29的数据跟第一个工作簿一样,大家帮我修改下代码
Sub 平均值()
Dim ph$, fn$, sh As Worksheet
ph = ThisWorkbook.Path & "\"
fn = Dir(ph & "*.xls")
Do While fn <> ""
If fn <> ThisWorkbook.Name Then
With Workbooks.Open(ph & fn)
For Each sh In .Sheets
Dim arr(1 To 20000, 1 To 3), i&, s&, j%
For i = 2 To Range("a65536").End(xlUp).Row Step 12
s = s + 1
For j = 1 To 3
arr(s, j) = Application.WorksheetFunction.Sum(Cells(i, j).Resize(12)) / 12
Next
Next
Range("d2").Resize(s, 3) = arr
Next
.Close True
End With
End If
fn = Dir
Loop
End Sub
|
|