广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    使用VBA求解不同工作表的平均值

    来源:网络收集  点击:  时间:2024-07-07
    【导读】:
    如下图所示,一个工作薄里面的每一个工作表的格式都是一样的,需要对工作薄里边的工作表进行求解平均值(空白单元格、0、不是数值的不参与计算),然后填入第一个工作表相应的位置。此时最先想到的是AVERAGEIF函数,但实际使用时却出现错误,想来想去,还是不要老是紧盯那函数公式不放,不妨使用VBA程序来解决,方便快捷。工具/原料more计算机Excel 2010方法/步骤1/6分步阅读

    打开Excel表格后,点击菜单栏上面的【开发工具】,【Visual Basic】打开VBA编辑器。

    2/6

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

    3/6

    在代码框里边输入以下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

    4/6

    VBA程序代码思路解读:

    (1)由于每个工作表的命名不一样,也可能不规则,如果都使用工作表名称,录入的工作量也是挺大的,此时还是根据实际情况使用工作表的索引号比较妥当快捷;

    (2)先获取工作薄里边有多少个工作表,排除用于写入平均值的工作表,再逐一按照工作表顺序进行条件判断(不为空白、不为0、单元格为数值)并求和,对可以求和的表格计1,数值的和除以累计的个数就可以求出平均值。

    (3)每执行1行时,都会对所有工作表(除了用于写入平均值的工作表)进行判断、求解平均值。

    5/6

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

    6/6

    程序运行之后的结果。

    注意事项

    个人经验,仅供参考,不足之处,敬请谅解。

    学习EXCELVBA程序
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_942741.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 23:48:26  耗时:0.022
    0.0222s