Excel VBA 统分

“查看排名”按钮代码:

 1 Private Sub CommandButton1_Click()
 2 
 3 Dim cq(1000) '保存抽签序号
 4 Dim bj(1000) '保存参赛班级
 5 Dim gq(1000) '保存参赛项目
 6 Dim df(1000) '保存最终得分
 7 Dim c, b, g, d '临时变量
 8 Dim num    '存放参数对象数量
 9 
10 '获取A3-后面的非空行数
11 num = Application.WorksheetFunction.CountA(Sheets("统分").Range("A3:A1002"))
12 'MsgBox num
13 
14 '获取抽签序号、班级、项目和得分
15 For i = 1 To num
16    cq(i) = Sheet3.Cells(i + 3, 1)
17    bj(i) = Sheet3.Cells(i + 3, 2)
18    gq(i) = Sheet3.Cells(i + 3, 3)
19    If Sheet3.Cells(i + 3, 27) = "" Then
20      df(i) = 0
21    Else
22      df(i) = Sheet3.Cells(i + 3, 27)
23    End If
24 Next i
25 
26 '按照得分按大到小排序
27 For i = 1 To num - 1
28    For j = i + 1 To num
29        If df(i) <= df(j) Then
30            
31            d = df(i)   '交换最终得分
32            df(i) = df(j)
33            df(j) = d
34            
35            c = cq(i)  '交换抽签序号
36            cq(i) = cq(j)
37            cq(j) = c
38            
39            b = bj(i)  '交换参赛班级
40            bj(i) = bj(j)
41            bj(j) = b
42            
43            g = gq(i)  '交换参赛项目
44            gq(i) = gq(j)
45            gq(j) = g
46         
47        End If
48    Next j
49 Next i
50 
51 '将抽签序号、班级、项目和得分填入工作表4
52 For i = 1 To num
53     Sheet4.Cells(i + 2, 1) = cq(i)
54     Sheet4.Cells(i + 2, 2) = bj(i)
55     Sheet4.Cells(i + 2, 3) = gq(i)
56     Sheet4.Cells(i + 2, 4) = df(i)
57 Next i
58 
59 '按照得分排名(中国式)
60 Sheet4.Cells(3, 5) = 1 '第1个班级
61 For i = 2 To num        '第2-num班级
62    If Sheet4.Cells(i + 2, 4) = Sheet4.Cells(i + 1, 4) Then
63       Sheet4.Cells(i + 2, 5) = Sheet4.Cells(i + 1, 5)
64    Else
65       Sheet4.Cells(i + 2, 5) = Sheet4.Cells(i + 1, 5) + 1
66    End If
67 Next i
68 
69 For i = 1 To num
70     If Sheet4.Cells(i + 2, 4) = 0 Then
71         Sheet4.Cells(i + 2, 1) = ""
72         Sheet4.Cells(i + 2, 2) = ""
73         Sheet4.Cells(i + 2, 3) = ""
74         Sheet4.Cells(i + 2, 4) = ""
75         Sheet4.Cells(i + 2, 5) = ""
76     End If
77 Next i
78  Sheets("结果").Select
79  
80 End Sub

“清空数据”代码:

 1 Private Sub CommandButton2_Click()
 2  
 3   Dim flag
 4   flag = MsgBox("请问您确认要清空表数据吗?", 1)
 5   If flag = 1 Then
 6    
 7     Dim num1, num2   '存放参数对象数量
 8     
 9     '统分表数据清空
10     '获取A3-后面的非空行数
11     num1 = Application.WorksheetFunction.CountA(Sheets("统分").Range("A4:A1003"))
12     'MsgBox num
13     
14     '清空抽签序号到最后一个评委共23列num行数据
15     For i = 1 To num1
16        For j = 1 To 23
17           Sheet3.Cells(i + 3, j) = ""
18       Next j
19     Next i
20     
21    '结果表数据清空
22    '获取A3-后面的非空行数
23     num2 = Application.WorksheetFunction.CountA(Sheets("结果").Range("A3:A1002"))
24     
25     '清空抽签序号到排名共5列num行数据
26     For i = 1 To num2
27        For j = 1 To 5
28           Sheet4.Cells(i + 2, j) = ""
29        Next j
30     Next i
31   Else
32        MsgBox "您已取消清空表中数据~!"
33   End If
34 End Sub

“按序号显示”结果:

 1 Private Sub CommandButton2_Click()
 2 
 3 Dim cq(1000) '保存抽签序号
 4 Dim bj(1000) '保存参赛班级
 5 Dim gq(1000) '保存参赛项目
 6 Dim df(1000) '保存最终得分
 7 Dim pm(1000) '排名
 8 Dim c, b, g, d '临时变量
 9 
10 Dim num    '存放参数对象数量
11 
12 '获取A列 A3-后面的非空行数
13 num = Application.WorksheetFunction.CountA(Sheets("结果").Range("A3:A1000"))
14 'MsgBox num
15 
16 '获取抽签序号、班级、项目和得分
17 For i = 1 To num
18    cq(i) = Sheet4.Cells(i + 2, 1)
19    bj(i) = Sheet4.Cells(i + 2, 2)
20    gq(i) = Sheet4.Cells(i + 2, 3)
21    df(i) = Sheet4.Cells(i + 2, 4)
22    pm(i) = Sheet4.Cells(i + 2, 5)
23 
24 Next i
25 
26 '按照抽签小到大排序
27 For i = 1 To num - 1
28    For j = i + 1 To num
29        If cq(i) >= cq(j) Then
30            
31            c = cq(i)  '交换抽签序号
32            cq(i) = cq(j)
33            cq(j) = c
34            
35            b = bj(i)  '交换参赛班级
36            bj(i) = bj(j)
37            bj(j) = b
38            
39            g = gq(i)  '交换参赛项目
40            gq(i) = gq(j)
41            gq(j) = g
42            
43            d = df(i)   '交换最终得分
44            df(i) = df(j)
45            df(j) = d
46            
47            p = pm(i)   '交换排名
48            pm(i) = pm(j)
49            pm(j) = p
50         
51        End If
52    Next j
53 Next i
54 
55 '将抽签序号、班级、项目和得分填入工作表4
56 For i = 1 To num
57     Sheet4.Cells(i + 2, 1) = cq(i)
58     Sheet4.Cells(i + 2, 2) = bj(i)
59     Sheet4.Cells(i + 2, 3) = gq(i)
60     Sheet4.Cells(i + 2, 4) = df(i)
61     Sheet4.Cells(i + 2, 5) = pm(i)
62 Next i
63 
64 
65 Range("A3").Select
66 End Sub

“按排名显示”结果:

 1 Private Sub CommandButton3_Click()
 2 
 3 Dim cq(1000) '保存抽签序号
 4 Dim bj(1000) '保存参赛班级
 5 Dim gq(1000) '保存参赛项目
 6 Dim df(1000) '保存最终得分
 7 Dim pm(1000) '排名
 8 Dim c, b, g, d '临时变量
 9 
10 Dim num    '存放参数对象数量
11 
12 '获取A列 A3-后面的非空行数
13 num = Application.WorksheetFunction.CountA(Sheets("结果").Range("A3:A1000"))
14 'MsgBox num
15 
16 '获取抽签序号、班级、项目和得分
17 For i = 1 To num
18    cq(i) = Sheet4.Cells(i + 2, 1)
19    bj(i) = Sheet4.Cells(i + 2, 2)
20    gq(i) = Sheet4.Cells(i + 2, 3)
21    df(i) = Sheet4.Cells(i + 2, 4)
22    pm(i) = Sheet4.Cells(i + 2, 5)
23 
24 Next i
25 
26 '按照名次小到大排序
27 For i = 1 To num - 1
28    For j = i + 1 To num
29        If pm(i) >= pm(j) Then
30            
31            c = cq(i)  '交换抽签序号
32            cq(i) = cq(j)
33            cq(j) = c
34            
35            b = bj(i)  '交换参赛班级
36            bj(i) = bj(j)
37            bj(j) = b
38            
39            g = gq(i)  '交换参赛项目
40            gq(i) = gq(j)
41            gq(j) = g
42            
43            d = df(i)   '交换最终得分
44            df(i) = df(j)
45            df(j) = d
46            
47            p = pm(i)   '交换排名
48            pm(i) = pm(j)
49            pm(j) = p
50         
51        End If
52    Next j
53 Next i
54 
55 '将抽签序号、班级、项目和得分填入工作表4
56 For i = 1 To num
57     Sheet4.Cells(i + 2, 1) = cq(i)
58     Sheet4.Cells(i + 2, 2) = bj(i)
59     Sheet4.Cells(i + 2, 3) = gq(i)
60     Sheet4.Cells(i + 2, 4) = df(i)
61     Sheet4.Cells(i + 2, 5) = pm(i)
62 Next i
63 
64 
65 Range("A3").Select
66 End Sub

 

转载于:https://www.cnblogs.com/XH16/p/6514748.html

【最优潮流】直流最优潮流(OPF)课设(Matlab代码实现)内容概要:本文档主要围绕“直流最优潮流(OPF)课设”的Matlab代码实现展开,属于电力系统优化领域的教学与科研实践内容。文档介绍了通过Matlab进行电力系统最优潮流计算的基本原理与编程实现方法,重点聚焦于直流最优潮流模型的构建与求解过程,适用于课程设计或科研入门实践。文中提及使用YALMIP等优化工具包进行建模,并提供了相关资源下载链接,便于读者复现与学习。此外,文档还列举了大量与电力系统、智能优化算法、机器学习、路径规划等相关的Matlab仿真案例,体现出其服务于科研仿真辅导的综合性平台性质。; 适合人群:电气工程、自动化、电力系统及相关专业的本科生、研究生,以及从事电力系统优化、智能算法应用研究的科研人员。; 使用场景及目标:①掌握直流最优潮流的基本原理与Matlab实现方法;②完成课程设计或科研项目中的电力系统优化任务;③借助提供的丰富案例资源,拓展在智能优化、状态估计、微电网调度等方向的研究思路与技术手段。; 阅读建议:建议读者结合文档中提供的网盘资源,下载完整代码与工具包,边学习理论边动手实践。重点关注YALMIP工具的使用方法,并通过复现文中提到的多个案例,加深对电力系统优化问题建模与求解的理解。
统分系统的设计与实现是一个涉及多个维度的综合性工程,涵盖数据汇总、统计分析和评分管理等核心功能模块。这类系统通常用于竞赛评分、考试成绩处理、绩效评估等场景,其核心目标是确保数据处理的准确性、高效性和结果的客观性。 ### 数据汇总 数据汇总模块负责从多个数据源中提取原始数据,并进行清洗、整合,形成统一的数据视图。该模块需要支持多种数据格式的导入,如Excel、CSV、数据库等,并具备数据校验功能以确保数据的完整性和一致性。例如,在竞赛评分系统中,来自不同裁判组的评分结果需要通过标准化格式进行汇总,确保后续统计分析的准确性。 ### 统计分析 统计分析模块是统分系统的核心部分,负责对汇总后的数据进行计算和分析,生成各类统计报。常见的分析包括平均值、标准差、排名等。对于评分类系统,还可以实现异常值检测(如去除最高分和最低分)、权重分配等功能。该模块通常依赖于SQL查询、Python数据分析库(如Pandas、NumPy)或BI工具(如Tableau)来实现。 以下是一个使用Pandas进行简单统计分析的示例代码: ```python import pandas as pd # 读取评分数据 df = pd.read_csv('scores.csv') # 计算每位选手的平均分 average_scores = df.groupby('选手ID')['得分'].mean().reset_index() # 输出结果 print(average_scores) ``` ### 评分管理 评分管理模块负责评分规则的配置、评分流程的控制以及评分结果的存储。该模块需要支持多角色权限管理,如裁判、管理员等,并具备评分过程的审计功能。在评分过程中,系统应支持随机抽签分组机制,确保评分的公平性。评分结果应与参考答案或评分标准进行比对,并在评分中进行统计汇总,以保证成绩评定的严谨性和客观性[^1]。 ### 系统架构设计 统分系统的架构通常采用分层设计,包括数据层、业务逻辑层和应用层: - **数据层**:负责数据的存储与管理,通常使用关系型数据库(如MySQL、PostgreSQL)或数据仓库(如Snowflake、Redshift)。 - **业务逻辑层**:实现数据处理、评分算法、统计分析等核心功能,通常基于后端语言(如Java、Python、Node.js)实现。 - **应用层**:提供用户界面,支持数据录入、结果展示、报导出等功能,通常采用前端框架(如React、Vue.js)构建。 ### 数据治理与质量管理 在统分系统中,数据治理和质量管理是确保系统长期稳定运行的关键。例如,基础数据的变更可能会对现有流程和IT系统产生影响,因此其管理重点在于变更管理和统一标准管控;而主数据的错误可能导致大量事务数据错误,因此需确保其同源多用并进行数据内容校验[^3]。数据经理在其中扮演重要角色,统筹管理信息架构工程师、数据治理工程师、数据分析师和数据科学家,共同完成数据解决方案的交付和验证[^2]。 ### 元数据管理 元数据管理在统分系统中也占据重要地位,尤其是在处理非结构化数据时。系统可以通过元数据采集、标准化和整合,将非结构化数据的分析结果统一存放在元数据管理平台中,以增强用户体验和数据可追溯性[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值