excel - 对未指定的列范围进行平均时遇到问题
问题描述
我正在尝试将一列中的所有行平均到多列(数量不确定)。我知道我可以编写一个代码来一次完成每一列,但我希望找到一种缩短代码长度的方法。
到目前为止,我已经设法平均一列 (B),但似乎无法自动填充最后一列,这可能会改变长度。我也试过做一个 if 语句,比如“如果上面一行有一个值,那么做平均”,但我不太擅长使用 VBA,所以真的不知道该怎么做。我需要帮助对所有包含值的列进行与下面代码中所示相同的平均。我的值特别从第 5 行开始,一直下降到一个未指定的范围。
Dim rng1 As Range
Dim rng2 As Range
Dim myavg As Range
Set rng1 = Range("B5")
Set rng2 = Range("B5").End(xlDown)
Set myavg = Range("B5").End(xlDown).Offset(1, 0)
myavg = "=Average(" & rng1.Address & ":" & rng2.Address & ")"
解决方案
您可以Do While
按如下方式使用:
Dim rng1 As Range
Dim rng2 As Range
Dim myavg As Range
Set rng1 = Range("B5")
Do While rng1.Value <> ""
Set rng2 = Cells(Rows.count, rng1.Column).End(xlUp) ' using @Chronocidal's suggestion above
Set myavg = rng2.Offset(1, 0)
myavg.Formula = "=Average(" & rng1.Address & ":" & rng2.Address & ")"
Set rng1 = rng1.Offset(0, 1)
Loop
推荐阅读
- flutter - 从 FireStore 检索数据
- mongodb - 使用 go mongo-driver 在对象中的对象数组中查找匹配字段
- vue.js - 如何使用 vuex-test-utils 测试组件中的 VueX 状态变化?
- python - 如何从需要登录 + OTP 的网站中提取数据
- html - 如何在 Excel 中嵌入 HTML 文件?
- javascript - 如何使用谷歌脚本从侧边栏(也是 HTML)调用模式对话框(带有 HTML 文件)
- android - 在 Kotlin 中设置属性值的最简单方法?
- javascript - 自定义 Angular 材质 mattooltip 和格式数据以显示在工具提示中
- angular - Angular 9 管道变换数组使用过滤器和返回可观察的过滤器函数
- bash - 我可以在 bash 中将 timeout 的命令用于代码块吗?