我想對從 B4 開始的條目進行平均。告訴我應該在我的代碼中更改什么。我是 vba 新手。
Range("F13").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=AVERAGE(Range(Range("B4").End(xlDown)))"
編輯:在這種情況下它是如何作業的?
Range("F17").Select
Application.CutCopyMode = False
Range("F17").Formula = "=IF(COUNT(R[-13]C[-2]:R[-10]C[-2])=0,10^99,COUNT(" & Range(Range("D4"), Range("D4").End(xlDown)).Address & ")"
uj5u.com熱心網友回復:
如果您的目標是在單元格中包含實際公式(因此如果作業表上的值發生更改,它將自動更新),那么您可以這樣做:
Sub test()
Dim rgStart As Range, rgStop As Range, rg As Range
Set rgStart = Range("B4")
Set rgStop = rgStart.End(xlDown)
Set rg = Range(rgStart, rgStop)
Range("F13").Formula = "=AVERAGE(" & rg.Address & ")"
End Sub
...這是更整潔的方式(更多代碼但更容易理解)。
這是相同的代碼,但更“緊湊”:
Sub test()
Range("F13").Formula = "=AVERAGE(" & Range(Range("B4"), Range("B4").End(xlDown)).Address & ")"
End Sub
如果您實際上不需要單元格中的公式(因此它是靜態值),您仍然可以使用 呼叫作業表AVERAGE函式Application.WorksheetFunction,例如:
Sub test()
Dim rgStart As Range, rgStop As Range, rg As Range
Set rgStart = Range("B4")
Set rgStop = rgStart.End(xlDown)
Set rg = Range(rgStart, rgStop)
Range("F13") = Application.WorksheetFunction.Average(rg)
End Sub
...再次,“壓縮”:
Sub test()
Range("F13") = Application.WorksheetFunction.Average(Range(Range("B4"), Range("B4").End(xlDown)))
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/411973.html
標籤:
上一篇:SumIf公式與表格
