[英]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
是什么...我假設此代碼是在用戶在一列中選擇了幾行之后運行的? 如果沒有,你需要重新考慮更多的事情。 但最明顯的問題是你在For
和Next
之間沒有任何命令
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.