ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 952|回复: 12

[求助] 如何把公式转为vba

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-2-4 21:52 | 显示全部楼层 |阅读模式
各位大神,如何把公式转为vba进行统计?附件如下

全县成绩统计testdd - 副本.rar

644.72 KB, 下载次数: 48

TA的精华主题

TA的得分主题

发表于 2024-2-4 21:55 | 显示全部楼层
首先 学会代码基础

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-4 23:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
大神们,帮忙弄下,准备猛啃有关书籍

TA的精华主题

TA的得分主题

发表于 2024-2-5 00:40 | 显示全部楼层
image.png

全县成绩统计testdd - 副本.rar

651.46 KB, 下载次数: 45

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-5 07:03 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-2-5 08:11 | 显示全部楼层
你能用公式解决,已有相当的基础了,转向VBA只要跨过一条坎即可飞速进步,这条坎只要有师傅领进门就可以了!

TA的精华主题

TA的得分主题

发表于 2024-2-5 10:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 fzxba 于 2024-2-5 11:09 编辑

参与练习.zip (682.82 KB, 下载次数: 33)

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-5 10:37 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-2-5 10:44 | 显示全部楼层
加上注释 就更清晰明了 每句代码的意义
Sub TestSub()
    arr = Sheets("学生成绩").UsedRange
    With Sheets("七年总分")
        优秀分 = .[g2]
        及格分 = .[i2]
        Dim brr(1 To 1000, 1 To 40)
        a = [{660,650,640,630,620,610,600,590,580,570,560,550,540,530,520,510,500,480,460,440,420,400,380,360,340,320,300}]
        For i = 4 To UBound(arr)
            If arr(i, 1) <> 学校名 Then
                n = n + 1
                brr(n, 1) = arr(i, 1) '学校
                brr(n, 11) = arr(i, 12) '最高分
                brr(n, 12) = IIf(arr(i, 12) = "", 1000, arr(i, 12)) '最低分
                学校名 = arr(i, 1)
            End If
            brr(n, 2) = brr(n, 2) + 1 '应考人数
            If arr(i, 12) <> "" Then
                brr(n, 3) = brr(n, 3) + 1 '参考人数
                brr(n, 4) = brr(n, 3) / brr(n, 2) '参考率
                brr(n, 5) = brr(n, 5) + arr(i, 12) '参考总分汇总
                brr(n, 6) = Round(brr(n, 5) / brr(n, 3), 2) '平均分
                If arr(i, 12) >= 及格分 Then
                    brr(n, 9) = brr(n, 9) + 1 '及格人数
                    brr(n, 10) = brr(n, 9) / brr(n, 3) '及格率
                End If
                If arr(i, 12) >= 优秀分 Then
                    brr(n, 7) = brr(n, 7) + 1 '优秀人数
                    brr(n, 8) = brr(n, 7) / brr(n, 3) '优秀率
                End If
                If arr(i, 12) > brr(n, 11) Then
                    brr(n, 11) = arr(i, 12) '更新最高分
                End If
                If arr(i, 12) < brr(n, 12) Then
                    brr(n, 12) = arr(i, 12) '更新最低分
                End If
                For j = 1 To UBound(a)
                    If arr(i, 12) >= a(j) Then
                        brr(n, j + 12) = brr(n, j + 12) + 1 '计算各个分数段人数
                    End If
                Next
                If arr(i, 12) < 300 Then
                    brr(n, 40) = brr(n, 40) + 1 '计算300分以下人数
                End If
            End If
        Next
        .[a4].Resize(n, 40) = brr
    End With
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-5 12:24 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 21:37 , Processed in 0.038007 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表