Excel 计算一列的平均值,并将该答案放置在该列最后一个值下方的两个单元格中
我想计算Q列的平均值,并将答案放在Q列最后一个值的下方2个单元格。如果我插入一个msgbox,但我无法将答案放入正确的单元格,则我使用的代码将执行计算并给出Q2和Q列结尾之间的值的平均值Excel 计算一列的平均值,并将该答案放置在该列最后一个值下方的两个单元格中,excel,vba,Excel,Vba,我想计算Q列的平均值,并将答案放在Q列最后一个值的下方2个单元格。如果我插入一个msgbox,但我无法将答案放入正确的单元格,则我使用的代码将执行计算并给出Q2和Q列结尾之间的值的平均值 Sub AverageRates() With ActiveSheet 'Determine last row Dim lastRow As Long Dim cellRange As Range Dim myAvg As Double lastRow = .Cells(.Rows.Count, "D").
Sub AverageRates()
With ActiveSheet
'Determine last row
Dim lastRow As Long
Dim cellRange As Range
Dim myAvg As Double
lastRow = .Cells(.Rows.Count, "D").End(xlUp).Row
'Average rate calculation
myAvg = Application.WorksheetFunction.Average(Range("Q1:Q" & lastRow))
Range("Q2:Q" & lastRow).Value = myAvg
'place the calculated average value 2 cells below the last cell in column Q
Set cellRange = Range("Q" & Lastrow").offset(2,0).select
End With
End Sub
你很接近。。。尝试:
Option Explicit
Sub AverageRates()
Dim lastRow As Long
Dim myAvg As Double
With ActiveSheet
lastRow = .Cells(.Rows.Count, "Q").End(xlUp).Row
myAvg = Application.WorksheetFunction.Average(Range("Q1:Q" & lastRow))
Range("Q" & lastRow).Offset(2, 0).Value = myAvg
End With
End Sub
对于多栏回答,假设各栏的长度不相等(如果是这样,则可以使用@BigBen建议的方法),然后可以执行以下操作:
Sub AverageRates2()
Dim mySheet As Worksheet
Dim myColumn As Range
Dim myDataSet As Range
Dim lastRow As Long
Dim myAvg As Double
Set mySheet = ActiveSheet
For Each myColumn In mySheet.Range("J:Q").Columns
lastRow = mySheet.Cells(mySheet.Rows.Count, myColumn.Column).End(xlUp).Row
myAvg = Application.WorksheetFunction.Average(myColumn.Rows(1).Resize(lastRow, 1))
myColumn.Rows(lastRow).Offset(2, 0).Value = myAvg
Next
End Sub
谢谢如果我想要J列到Q列的平均值,但仍然对每个结果使用偏移量(2,0),您能建议我对上面的内容做些什么修改吗?@StephenCallaghan-您可以只做
.Range(“J”&lastRow&“:Q”&lastRow)。偏移量(2)。公式=“=AVERAGE(J1:J”&lastRow&>)
。这是假设列J到Q具有相同的最后一行。