vba excel数据的平均值

时间:2014-11-14 09:38:54

标签: excel vba average

我是这个编程的新手。我一直在寻找这个主题,但我无法找到适合我问题的任何内容。

我有一系列带有度量的数据。我有31行和96列。我希望我的VBA代码找到每列数据的平均值,并将其显示在列的最后一个值之后的行上。

有人能帮助我吗?

先谢谢。

3 个答案:

答案 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