ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助下分数段人数统计问题,谢谢

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-4-14 22:07 | 显示全部楼层 |阅读模式
本帖最后由 lktqj 于 2022-4-15 09:34 编辑

大神,我想把总成绩在分数段统计这个表中按照各班各科分数段人数统计出来。
刚开始学VBA,也借鉴了论坛里面大神的例子,学艺不精,把大神的例子修改后始终出错,故来求助,感谢
重新放上了打包文件和用的大神的例子

各分数段统计.rar

78.42 KB, 下载次数: 2

分段统计1.zip

74.28 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2022-4-14 22:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
分数段统计表,是空的。
格式是怎样的?字段?模拟数据?

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-14 22:18 | 显示全部楼层
本帖最后由 lktqj 于 2022-4-14 22:26 编辑
opel-wong 发表于 2022-4-14 22:10
分数段统计表,是空的。
格式是怎样的?字段?模拟数据?

感谢,我重新上传个附件,清大神看看,我希望是能随意增减班级数目和科目,不知道行不。我这再上传个附件,我忘记是哪个大神做的了,在此感谢,用这个代码我那表中时,我一直修改不对
希望能做的像做这个附件的模式一样。

各分数段统计.rar

78.28 KB, 下载次数: 8

分段统计.rar

28.24 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2022-4-15 08:07 | 显示全部楼层
建议楼主结合附件,将需求具体描述清楚,并模拟结果
目前分段怎么分,结果格式怎样,全都没有,没法猜结果的

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-15 08:14 | 显示全部楼层
liulang0808 发表于 2022-4-15 08:07
建议楼主结合附件,将需求具体描述清楚,并模拟结果
目前分段怎么分,结果格式怎样,全都没有,没法猜结果 ...

谢谢版主关注,我利用分段统计的例子在自行修改后始终要出问题,还请版主指点下。附上样式在各科分段统计压缩包里面和我用的分段统计的例子。

分段统计1.zip

74.28 KB, 下载次数: 3

各分数段统计.rar

77.86 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2022-4-15 09:44 | 显示全部楼层
  1. Sub test()
  2.   Dim r%, i%
  3.   Dim arr, brr
  4.   Dim d As Object
  5.   Application.ScreenUpdating = False
  6.   Application.DisplayAlerts = False
  7.   Set d = CreateObject("scripting.dictionary")
  8.   With Worksheets("文科")
  9.     .AutoFilterMode = False
  10.     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  11.     c = .Cells(2, .Columns.Count).End(xlToLeft).Column
  12.     arr = .Range("a2").Resize(r - 1, c)
  13.   End With
  14.   ls = 17
  15.   For j = 5 To UBound(arr, 2)
  16.     If InStr("语数英政史地生化", arr(1, j)) <> 0 Then
  17.       Set d(arr(1, j)) = CreateObject("scripting.dictionary")
  18.       For i = 2 To UBound(arr)
  19.         If Not d(arr(1, j)).exists(arr(i, 2)) Then
  20.           ReDim brr(1 To ls)
  21.           brr(1) = arr(i, 2)
  22.         Else
  23.           brr = d(arr(1, j))(arr(i, 2))
  24.         End If
  25.         If Len(arr(i, j)) <> 0 Then
  26.           n = Application.Match(arr(i, j), Array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140))
  27.           If Not IsError(n) Then
  28.             n = 17 - n
  29.             brr(n) = brr(n) + 1
  30.           End If
  31.           brr(ls) = brr(ls) + 1
  32.         End If
  33.         d(arr(1, j))(arr(i, 2)) = brr
  34.       Next
  35.     End If
  36.   Next
  37.   With Worksheets("分数段统计")
  38.     .Cells.Clear
  39.     With .Range("a1")
  40.       .Value = "各分数段各班人数分科统计表"
  41.       .Resize(1, ls).Merge
  42.       With .Font
  43.         .Name = "微软雅黑"
  44.         .Size = 18
  45.       End With
  46.     End With
  47.     r1 = 2
  48.     For Each aa In d.keys
  49.       .Cells(r1, 1) = aa
  50.       With .Cells(r1 + 1, 1).Resize(1, ls)
  51.         .NumberFormatLocal = "@"
  52.         .Value = Array("班级", "140以上", "130-140", "120-130", "110-120", "100-110", "90-100", "80-90", "70-80", "60-70", "50-60", "40-50", "30-40", "20-30", "10-20", "0-10", "实考人数")
  53.       End With
  54.       m = 0
  55.       ReDim crr(1 To d(aa).Count, 1 To ls)
  56.       For Each bb In d(aa).keys
  57.         brr = d(aa)(bb)
  58.         m = m + 1
  59.         For j = 1 To UBound(brr)
  60.           crr(m, j) = brr(j)
  61.         Next
  62.       Next
  63.       .Cells(r1 + 2, 1).Resize(UBound(crr), UBound(crr, 2)) = crr
  64.       .Cells(r1 + 2, 1).Resize(UBound(crr), UBound(crr, 2)).Sort key1:=.Cells(r1 + 2, 1), order1:=xlAscending, Header:=xlNo
  65.       With .Cells(r1 + 1, 1).Resize(1 + UBound(crr), UBound(crr, 2))
  66.         .Borders.LineStyle = xlContinuous
  67.         With .Font
  68.           .Name = "微软雅黑"
  69.           .Size = 11
  70.         End With
  71.       End With
  72.       r1 = r1 + 2 + UBound(crr) + 1
  73.     Next
  74.     With .UsedRange
  75.       .HorizontalAlignment = xlCenter
  76.       .VerticalAlignment = xlCenter
  77.     End With
  78.     .Columns(1).Resize(, ls).AutoFit
  79.   End With
  80. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2022-4-15 09:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
详见附件。

各分数段统计.rar

92.78 KB, 下载次数: 28

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-15 09:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

感谢感谢,代码我正在学习,有些地方还不是很清楚,慢慢学。
另外,我想问下,像是政史地满分都是100,满分750,如何更改呢,?

TA的精华主题

TA的得分主题

发表于 2022-4-15 10:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lktqj 发表于 2022-4-15 09:59
感谢感谢,代码我正在学习,有些地方还不是很清楚,慢慢学。
另外,我想问下,像是政史地满分都是100, ...

你说怎么更改呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-15 10:08 | 显示全部楼层
chxw68 发表于 2022-4-15 10:03
你说怎么更改呢?

我想的是语数英是150分的满分,分数段可以不变。政史地三科满分100,分数段就从100开始,而不是150开始。还有个总成绩的统计,满分750,可以分成650以上,650-600,600-550,依次下去,最后一个200以下。我看你的代码里面用了循环,是不是我这样的分类不能用循环?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 21:38 , Processed in 0.036004 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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