繁体   English   中英

计算特定范围的平均值

[英]Calculate average of specific range

我正在尝试计算每个类别(a,b,c)的第三行数字的平均值:

数据
在此处输入图像描述

例如:所有“a”的平均值,所有“b”的平均值,所有“c”的平均值。

然后,我想插入三行,一行用于“a”,一行用于“b”,一行用于“c”,第三列的平均值并删除旧值。 它看起来像这样:
在此处输入图像描述

Sub calculate_averages()
    
    ActiveWorkbook.Worksheets("Sheet1").sort.SortFields.Clear

    ActiveWorkbook.Worksheets("Sheet1").sort.SortFields.Add2 Key:=Range("A2:A10") _
      , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    With ActiveWorkbook.Worksheets("Sheet1").sort
        .SetRange Range("A2:C10")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    Selection.Offset(0, 2).Select
    Set rg1 = Selection
    
    n_rows = rg1.Rows.Count
    
    For i = 1 To n_rows
        
    Next
        
    media = Application.Average(rg1)
    MsgBox (media)
               
End Sub
    
Sub selecionar()
    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
End Sub

我也同意 Fernando 和 Michelle 的观点,但我对您的第一个 sub 进行了一些更改,可能会解决您的问题:

Sub calculate_averages()

Dim r, rg1 As Range

ActiveWorkbook.Worksheets("Sheet1").sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").sort.SortFields.Add2 Key:=Range("A2:A10") _
    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").sort
        .SetRange Range("A2:C10")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Set rg1 = Selection.Offset(0, 2)

For each r in rg1
    
media = Application.Average(rg1)
MsgBox (media)

Next
           
End Sub

我不确定你的第二个潜艇的目的。 你打算连续运行两个潜艇吗? 如果是这样,他们可能应该只是一个潜艇。 如果是这种情况,有比使用.Selection.Select更好的方法来做这一切,依靠像这样的这些方法是冒险的东西。

编辑:我的代码也可能无法正常工作,因为我不确定.Selection是什么...我假设此代码是在用户在一列中选择了几行之后运行的? 如果没有,你需要重新考虑更多的事情。 但最明显的问题是你在ForNext之间没有任何命令

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM