ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
一招顶“一万招”的懒人技巧 Excel 2016函数公式学习大典 Office知识技巧免费学 打造核心竞争力的职场宝典
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 72|回复: 5

[求助] 求助:同样的代码,为何有的能赋分,有的错误!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-3-16 23:23 | 显示全部楼层 |阅读模式
各位大神,请看一下我的代码是不是有问题?
  1. Sub 批量赋分()
  2. Dim hs As Long                             '命名一个变量hs

  3.     hs = Shcj.Range("A1000").End(xlUp).Row '判定成绩输入表的行数

  4. Dim h As Long

  5.     For h = 3 To hs
  6.         nj = Shcj.Cells(h, 1)  '年级
  7.         xb = Shcj.Cells(h, 2)  '性别
  8.         xm1 = Shcj.Cells(h, 3) '测试项目1
  9.         xm2 = Shcj.Cells(h, 5) '测试项目2
  10.         xm3 = Shcj.Cells(h, 7) '测试项目3
  11.         

  12.    Shcj.Cells(h, 4) = 得分1(nj, xb, xm1)  '根据年级、性别、测试项目1写入得分1
  13.    Shcj.Cells(h, 6) = 得分2(nj, xb, xm2)  '根据年级、性别、测试项目2写入得分2
  14.    Shcj.Cells(h, 8) = 得分3(nj, xb, xm3)  '根据年级、性别、测试项目2写入得分3
  15.    Shcj.Cells(h, 9) = Shcj.Cells(h, 4) * 0.2 + Shcj.Cells(h, 6) * 0.4 + Shcj.Cells(h, 8) * 0.4 '项目1占比20%,项目2占比20%,项目3占比40%汇总写入总分


  16. Next h
  17. End Sub
  18. Function 得分1(nj, xb, xm)
  19.   Set shbz = Sheets(Trim(Str(nj)))      '设置shbz为评分标准
  20.   If xb = "男" Then lie = 1 Else lie = 2    '如果是男生则按照第一列查找,否则按照第二列查找

  21.   hangs = shbz.Range("A1000").End(xlUp).Row '判定标准所在的行数

  22.   For i = 4 To hangs                        '从第4行开始到最后
  23.   
  24.     If xm < shbz.Cells(i, lie) Then         '如果输入的成绩小于等于标准所在的行,则按照本行的成绩
  25.        cj = shbz.Cells(i - 1, 3)
  26.     Else: xm = shbz.Cells(i, lie)
  27.        cj = shbz.Cells(i, 3)
  28.        Exit For
  29.     End If
  30.   Next
  31. 得分1 = cj
  32. End Function
  33. Function 得分2(nj, xb, xm)

  34.   Set shbz = Sheets(Trim(Str(nj)))
  35.    
  36.     If xb = "男" Then lie = 4 Else lie = 5
  37.   
  38.   hangs = shbz.Range("A1000").End(xlUp).Row

  39.     For i = 4 To hangs
  40.         If xm < shbz.Cells(i, lie) Then
  41.             cj = shbz.Cells(i - 1, 6)
  42.         Else: xm = shbz.Cells(i, lie)
  43.             cj = shbz.Cells(i, 6)
  44.       Exit For
  45.     End If
  46.   Next
  47. 得分2 = cj
  48. End Function
  49. Function 得分3(nj, xb, xm)

  50.   Set shbz = Sheets(Trim(Str(nj)))
  51.    
  52.     If xb = "男" Then lie = 7 Else lie = 8
  53.   
  54.   hangs = shbz.Range("A1000").End(xlUp).Row

  55.     For i = 4 To hangs
  56.         
  57.         If xm < shbz.Cells(i, lie) Then
  58.             cj = shbz.Cells(i - 1, 9)
  59.         Else: xm = shbz.Cells(i, lie)
  60.             cj = shbz.Cells(i, 9)
  61.       Exit For
  62.    
  63.     End If
  64.   Next
  65. 得分3 = cj
  66. End Function
复制代码


QQ图片20210316232216.png

高中评分ceshi.rar

35 KB, 下载次数: 7

相关搜索

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-16 23:24 | 显示全部楼层
为什么立定跳远能行,其他两项就不行呢?

TA的精华主题

TA的得分主题

发表于 2021-3-17 08:46 | 显示全部楼层
lushang2018 发表于 2021-3-16 23:24
为什么立定跳远能行,其他两项就不行呢?

得分1,倒序
得分2,3  正序

高中评分ceshi.rar

31.57 KB, 下载次数: 7

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-17 11:25 | 显示全部楼层
yjh_27 发表于 2021-3-17 08:46
得分1,倒序
得分2,3  正序

不行,变成这样了!我还是不太理解,麻烦您再解释一下行吗?
9d02f99f97bfc496e21a23c09ba55d5.png

TA的精华主题

TA的得分主题

发表于 2021-3-17 12:50 | 显示全部楼层
lushang2018 发表于 2021-3-17 11:25
不行,变成这样了!我还是不太理解,麻烦您再解释一下行吗?
  1. If xm [color=Blue]<[/color] shbz.Cells(i, lie) Then         '如果输入的成绩小于等于标准所在的行,则按照本行的成绩
  2.        cj = shbz.Cells(i - 1, 3)
  3.     Else: xm = shbz.Cells(i, lie)
  4.        cj = shbz.Cells(i, 3)
  5.        Exit For
  6.     End If
复制代码

Else: xm = shbz.Cells(i, lie)  不理解,我改了,你把他还原试试

得分1  <
得分2  >
得分3  >
这个对应标准表的排序

TA的精华主题

TA的得分主题

发表于 2021-3-17 12:55 | 显示全部楼层
lushang2018 发表于 2021-3-17 11:25
不行,变成这样了!我还是不太理解,麻烦您再解释一下行吗?

这样,试试

高中评分ceshi.rar

31.53 KB, 下载次数: 0

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,每天学会一个新技能

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

GMT+8, 2021-3-17 19:29 , Processed in 0.067458 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2021 Wooffice Inc.

   

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

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

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