如何通过vba在excel中求平均值?
在Excel中,您可以使用VBA计算一系列单元格或多个区域的平均值。并且,在本教程中,我们将学习使用它的不同方法。
使用 WorksheetFunction 在 VBA 中求平均值
在 VBA 中,您可以使用多个函数,但没有用于此目的的特定函数。这并不意味着我们不能取平均值。在VBA中,有一个名为WorksheetFunction的属性可以帮助您在VBA代码中调用函数。
让我们对 A1:A10 范围内的值进行平均。
- 首先输入工作表函数属性,然后从列表中选择 AVERAGE 函数。
- 接下来,您必须像在电子表格中输入函数时一样输入起始括号。
- 之后,我们需要使用范围对象来引用我们要计算平均值的范围。
- 最后,键入右括号并将函数的返回值分配给单元格 B1。
Application.WorksheetFunction.Average( Range ("A1:A10"))
现在,当您运行此代码时,它会计算 A1:A10 范围内的值的平均值,并将该值输入到单元格 B1 中。
整列或整行的平均值
在这种情况下,您只需要指定行或列,而不是我们在上一个示例中使用的范围。
'for the entire column A Range ("B1") = Application.WorksheetFunction.Average( Range ("A:A")) 'for entire row 1 Range ("B1") = Application.WorksheetFunction.Average( Range ("1:1"))
使用 VBA 对选择值进行平均
现在假设您只想计算所选单元格的平均值,因为您可以使用这样的代码。
Sub vba_average_selection() Dim sRange As Range Dim iAverage As Long On Error GoTo errorHandler Set sRange = Selection iAverage = WorksheetFunction.Average(Range(sRange.Address)) MsgBox iAverage Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
在上面的代码中,我们使用了选择,然后将其指定在变量“sRange”中,然后我们使用该范围变量的地址来获取平均值。
VBA平均以上所有单元格
以下代码获取上面所有单元格及其平均值,并将结果输入到所选单元格中。
Sub vba_auto_Average() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection. End (xlUp). End (xlUp).Address iLast = Selection. End (xlUp).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Average(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
使用 VBA 平均动态范围
同样,您可以使用动态范围,同时使用 VBA 对值进行平均。
Sub vba_dynamic_range_average() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection.Offset(1, 1).Address iLast = Selection.Offset(5, 5).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Average(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
平均动态列或行
同样,如果您想使用动态列,您可以使用以下代码,该代码将获取活动单元格的列以及其中所有值的平均值。
Sub vba_dynamic_column() Dim iCol As Long On Error GoTo errorHandler iCol = ActiveCell.Column MsgBox WorksheetFunction.Average(Columns(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
并连续。
Sub vba_dynamic_row() Dim iRow As Long On Error GoTo errorHandler iRow = ActiveCell.Row MsgBox WorksheetFunction.Average(Rows(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub