我是这个编程的新手。我一直在寻找这个主题,但我无法找到适合我问题的任何内容。
我有一系列带有度量的数据。我有31行和96列。我希望我的VBA代码找到每列数据的平均值,并将其显示在列的最后一个值之后的行上。
有人能帮助我吗?
先谢谢。
答案 0 :(得分:2)
我发现最简单的答案是使用以下内容:
Application.WorksheetFunction.Average(dataArray)
这(假设)与使用工作表中的平均函数相同。唯一的缺点似乎是你必须使用数组或其他一些数据点列表。这可以通过以下方式轻松解决:
Function getArray(dataRange As Range) As Variant()
Dim arr(dataRange.Rows.Count, dataRange.Columns.Count) as Variant
Dim i as Integer, j as Integer
For i = 1 to dataRange.Rows.Count
For j = 1 to dataRange.Columns.Count
arr(i, j) = dataRange(i, j)
Next
Next
getArray = arr
End Function
这会将范围转换为数组,并可通过Average
函数访问。例如:
myAverage = Application.WorksheetFunction.Average(getArray(Range("C1:CT56")))
答案 1 :(得分:1)
您可以在数据下方的行中输入公式:
=average(A1:A96)
为此目的使用VBA并不容易吗?
如果你真的想使用VBA:
Sub ownaverage()
Dim totalsum As Double
Dim totalnum As Double
Dim ownav As Double
totalsum = 0
totalnum = 0
For Each c In Worksheets("Sheet1").Range("D17:E17").Cells
totalsum = totalsum + c.Value
totalnum = totalnum + 1
Next
ownav = totalsum / totalnum
ownaverage = ownav
Range("I27").Select
ActiveCell.FormulaR1C1 = ownaverage()
End Sub
循环参考:http://msdn.microsoft.com/en-us/library/office/aa221353(v=office.11).aspx
答案 2 :(得分:0)
再次感谢您的回答。我能够自己解决这个问题。我写的代码是:
Private Sub CommandButton2_Click()
Dim soma as Double
Dim media as Double
soma=0
media=0
totalnum=0
With Sheets("sheet1")
For j= 1 to 96
For i =28 to 58
Set target = Cells (i,j)
soma=soma+targe
totalnum=totalnum+1
Next i
Cells(i+1,j).Value = soma/totalnum
soma=0
totalnum=0
Next j
End With
End sub
我希望这段代码可以帮助那些有同样疑虑的人。
再次感谢DaveG