Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 计算一列的平均值,并将该答案放置在该列最后一个值下方的两个单元格中_Excel_Vba - Fatal编程技术网

Excel 计算一列的平均值,并将该答案放置在该列最后一个值下方的两个单元格中

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").

我想计算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").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具有相同的最后一行。