Excel VBA每个工作表上每个单元格的平均值

时间:2018-08-20 15:27:09

标签: excel vba excel-vba

我有一个包含多个工作表的工作簿,并且工作表的布局完全相同。例如C5可能是循环时间,我想知道所有工作表的平均循环时间。唯一的问题是我有很多数据,我有第5行到125004的数据,以及A到J列的数据。我不确定如何将数据平均到最后仍然有125004行和列的一张纸上A到J,仅显示所有工作表的平均值。

2 个答案:

答案 0 :(得分:1)

3D formula似乎足够,例如:

=AVERAGE(Sheet1:Sheet3!C5)

复制到适合的位置。

答案 1 :(得分:0)

在VBA中创建一个模块,并编写以下内容

Public Function GetAllSheetsAverage(makeUpdate As Boolean) As Double
If makeUpdate Then
    Application.Volatile
End If
Dim rng As Range
Dim sht As Worksheet
Set rng = Application.Caller
Dim sum As Double
sum = 0
Dim count As Integer
count = 0
For Each sht In ThisWorkbook.Worksheets
    If sht.Name = rng.Worksheet.Name Then GoTo SkipOwnSheet

    Dim rng2 As Range
    Set rng2 = sht.Range(rng.Address)

    sum = sum + rng2.Value

    count = count + 1

SkipOwnSheet:


Next sht

GetAllSheetsAverage = sum / count

结束功能

在单元格上使用功能=GetAllSheetsAverage(TRUE())。 TRUE将使函数侦听工作表中的每个更改,因此处理如此大量的数据可能会很慢。 您可以更改为false,但是只要其他工作表中的值发生更改,您就必须手动更新值。