使用VBA求解不同工作表的平均值
来源:网络收集 点击: 时间:2024-07-07打开Excel表格后,点击菜单栏上面的【开发工具】,【Visual Basic】打开VBA编辑器。

在VBA编辑器的菜单栏上面点击【插入】,【模块】。

在代码框里边输入以下VBA程序代码:
Sub AverageValue()
Dim i, j, c, co, su, bo
On Error Resume Next 忽略运行过程中出现的错误
Application.ScreenUpdating = False 关闭运行过程中屏幕刷新,提高运行速度
Set mysheet1 = ThisWorkbook.Worksheets(1) 定义工作表,即:Sheet1
co = ThisWorkbook.Sheets.Count 统计本工作表里面所含的工作表数量
For j = 2 To 1000 从第二行执行到1000行
su = 0 累计清零
c = 0 计数个数清零
For i = 2 To co 从第二个工作表开始执行,直至最后一个
Set mycells = ThisWorkbook.Worksheets(i).Cells(j, 2) 定义单元格
bo = IsNumeric(mycells) 判断单元格里面的值是否为数字
If mycells And mycells 0 And bo = True Then
如果单元格里面不为空白或者不为零,且为数值,则执行计算
su = Worksheets(i).Cells(j, 2) + su 单元格数值相加
c = c + 1 累计的次数
mysheet1.Cells(j, 2) = su / c 求解平均值
End If
Next
Next
Application.ScreenUpdating = True 恢复屏幕更新显示
End Sub

VBA程序代码思路解读:
(1)由于每个工作表的命名不一样,也可能不规则,如果都使用工作表名称,录入的工作量也是挺大的,此时还是根据实际情况使用工作表的索引号比较妥当快捷;
(2)先获取工作薄里边有多少个工作表,排除用于写入平均值的工作表,再逐一按照工作表顺序进行条件判断(不为空白、不为0、单元格为数值)并求和,对可以求和的表格计1,数值的和除以累计的个数就可以求出平均值。
(3)每执行1行时,都会对所有工作表(除了用于写入平均值的工作表)进行判断、求解平均值。

输入完程序之后,点击工具栏里边的“运行”图标运行程序,即可在工作表上面看到计算的结果(运行速度的快慢取决于计算量的大小)。

程序运行之后的结果。

个人经验,仅供参考,不足之处,敬请谅解。
学习EXCELVBA程序版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_942741.html