我有一个包含多个工作表的工作簿,并且工作表的布局完全相同。例如C5可能是循环时间,我想知道所有工作表的平均循环时间。唯一的问题是我有很多数据,我有第5行到125004的数据,以及A到J列的数据。我不确定如何将数据平均到最后仍然有125004行和列的一张纸上A到J,仅显示所有工作表的平均值。
答案 0 :(得分:1)
答案 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,但是只要其他工作表中的值发生更改,您就必须手动更新值。