【发布时间】:2019-03-07 17:15:53
【问题描述】:
我有一系列带有值的单元格,即
我想要一个 for 循环,对 A 列 (1) 中的第一个值、B 列 (3) 中的相邻值和 C 列 (74) 中的相邻值进行平均。我需要用户使用 msgbox 选择这个范围。
到目前为止,我可以在宏记录的帮助下编写此代码:
Sub averager()
Dim ran As Range, average As Variant, cell1 As Variant, cell2 As Variant
Dim i As Variant
Set ran = Application.InputBox(Prompt:="Enter range values: ", Type:=8)
For i = 0 To i = 8
ran.Offset(0, 13).Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-13]:RC[-11])"
average = WorksheetFunction.average(ran.Text)
Next i
End Sub
但是,此代码不执行循环,它只返回我选择的偏移位置的第一个三次的平均值。
循环如何对所有值执行操作?
【问题讨论】:
-
你为什么不直接使用公式并将它们复制下来?
-
我要学VBA! =D
-
“我想学习 VBA!=D” 然后阅读 How to avoid using Select in Excel VBA 并将该技术应用于您的代码,可能是最好的开始。 • 随后阅读For...Next statement 以获取
For循环的正确语法。 -
避免使用
Variant,这是您可以选择的最糟糕的类型(有时您无法避免,但如果您可以使用更合适的类型)。将上述内容应用于您的代码和edit 并更新您的问题(它可能会改变您的问题,因此您可能需要问其他问题)。 -
我试图四处阅读,但我没有设法为我的案例实现代码。我希望有一些好的 vba 经验的人可以帮助我。
标签: excel vba for-loop average