excel - 如何在 excel vba 中为用户定义的范围执行操作?
问题描述
我有一系列具有值的单元格,即
我想要一个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
但是,此代码不执行循环,它仅返回我选择的偏移位置的第一个三次的平均值。
循环如何对所有值执行操作?
解决方案
- Cancel在用户按下按钮的情况下捕获错误。
- 您不需要循环,您可以一次将公式写入多个单元格。
Option Explicit
Public Sub Averager()
Dim ValueRange As Range
On Error Resume Next 'if user presses cancel this throws an error
Set ValueRange = Application.InputBox(Prompt:="Select range values: ", Type:=8)
On Error GoTo 0
If Not ValueRange Is Nothing Then
ValueRange.Offset(ColumnOffset:=6).Resize(ColumnSize:=1).FormulaR1C1 = "=AVERAGE(RC[-6]:RC[-4])"
End If
End Sub
推荐阅读
- dart - 在 Dart 库中使用 webassembly (.wasm)
- c# - LINQ 从另一个实体列表中获取列表
- python - python根据给定日期打印出csv数据
- jquery - 如何使用 AJAX/jQuery 以 JSON 格式而不是带有键值对的 JSON POST 表单数据?
- c# - c# method type inference troubles
- regex - 寻找 Unicode-savvy 函数以在二进制数据中搜索文本
- python - scipy特殊函数不接收复杂参数
- jquery - 如何在 5 秒后使用 jquery 自动关闭 div 时手动关闭弹出 div
- django - 即使声明了字段,self.cleaned_data.get 也不返回
- python - .docx 文档没有属性“xpath”的属性错误