ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

在excel中,怎样能用VBA代码实现田径比赛成绩录入完成后自动生成单项名次表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-10-30 19:36 | 显示全部楼层 |阅读模式
本帖最后由 lsh888 于 2016-10-31 22:24 编辑

我写了VBA代码,但运行老出错,excel工作薄中有5个表,其中成绩录入已录完,团体总分已算出,用是函数调用。名次表生成,希望点击能够自动生成,请高手帮忙,特别请赵老师(zhaogang1960)百忙之中抽空帮我修改一下。附件已上传。Sub 名次表()Dim m As Integer, a As Variant, b As Variant, c As Variant, i As Integer, j As Integer
' 循环变量m从第3行查找到第390行
For m = 3 To 390 Step 3
    ' 取查询变量a,b,c等于第1,2,3列与第m行交叉单元格
    a = Cells(m, 1)
    b = Cells(m, 2)
    c = Cells(m, 3)
         ' 从第5行循环到最后的数据行
    For i = 1 To 成绩录入.Rows.Count
        ' 如果"成绩录入"工作表的第5,6,7列与第i行交叉单元格的值等于要查询的变量a,b,c,再查得分是否为7,5,4,3,2,1,
        If 成绩录入.Cells(i, 5) = a And 成绩录入.Cells(i, 6) = b And 成绩录入.Cells(i, 7) = c Then
            If 成绩录入.Cells(i, 10) = 7 Then
             '当查得第一名,得7分后,返回“成绩录入”工作表中第i行第3、4、8列中的姓名、单位、成绩至“名次表”的第4列m、m+1、m+2行
                    Cells(m, 4) = 成绩录入.Cells(i, 3)
                    Cells(m + 1, 4) = 成绩录入.Cells(i, 4)
                    Cells(m + 2, 4) = 成绩录入.Cells(i, 8)
                 Else: For j = 0 To 4 Step 1
                     If 成绩录入.Cells(i, 10) = 5 - j Then
                     '当查得第2-6名,得5、4、3、2、1分后,返回“成绩录入”工作表中第i行第3、4、8列中的姓名、单位、成绩至“名次表”的第5+j列m、m+1、m+2行
                           Cells(m, 5 + j) = 成绩录入.Cells(i, 3)
                           Cells(m + 1, 5 + j) = 成绩录入.Cells(i, 4)
                           Cells(m + 2, 5 + j) = 成绩录入.Cells(i, 8)
                      End If
                     Next j
                 End If
                End If
           ' 如果未找到查询变量a,b,c的值,则读取下一个i值
      Next i
Next m
' 退出代码
End Sub




田径比赛成绩录入系统.zip

268.52 KB, 下载次数: 30

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-10-30 19:42 | 显示全部楼层
请各位高手帮忙看一下,谢谢!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-10-30 19:46 | 显示全部楼层


所有田径比赛成绩已录入完成。现只要从  成绩录入 表中按组别、性别、项目、提取数据生成单项名次表。得分按1——6名分别是7,5,4,3,2,1,有些项目不足6人比赛,按减1名录取,所以我的代码中按是否有得分来查找返回数据。请看一下我的代码哪儿有问题,运行出错。








TA的精华主题

TA的得分主题

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

坛主:请您帮忙看一下,如何修改。谢谢!!

这是成绩录入截图

这是成绩录入截图

这是想在生成名次表的截图

这是想在生成名次表的截图

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-10-31 17:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请各位大侠,坛主帮我看一下,修改修改,谢谢!!我急啊!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-26 10:41 , Processed in 0.043839 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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