ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 用宏统计考试成绩中的各分数段人数

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2016-8-24 11:35 | 显示全部楼层
李桥贵 发表于 2016-8-24 11:34
老师麻烦帮忙一下,能否增加
平均分排名、合格率排名、优秀率排名、平均分年级差、合格率年级差、优秀率 ...

老师麻烦帮忙一下,能否增加
平均分排名、合格率排名、优秀率排名、平均分年级差、合格率年级差、优秀率年级差

TA的精华主题

TA的得分主题

发表于 2016-8-24 11:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 李桥贵 于 2016-8-24 14:23 编辑
李桥贵 发表于 2016-8-24 11:35
老师麻烦帮忙一下,能否增加
平均分排名、合格率排名、优秀率排名、平均分年级差、合格率年级差、优秀率 ...

老师麻烦帮忙一下,能否增加
平均分排名、合格率排名、优秀率排名、平均分年级差、合格率年级差、优秀率年级差

成绩分析.zip

35.92 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2016-8-24 17:08 | 显示全部楼层
只做了第一问和第三问,第二问有些问题不明白没有做。

成绩分析20160824.rar

46.35 KB, 下载次数: 66

TA的精华主题

TA的得分主题

发表于 2016-8-24 20:59 | 显示全部楼层
全部做完了。

成绩分析20160824.rar

62.13 KB, 下载次数: 135

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-8-25 20:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-12-14 20:59 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-5-11 22:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-10-8 21:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
mjzxlmg 发表于 2013-12-15 22:34
代码有错,要更正

大侠 能帮我看看我的附件里的问题吗?抽空帮我解决下 好吗?

求助各项人数统计20181006.zip

229.39 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2018-10-8 21:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
chxw68 发表于 2016-8-25 20:09
增加了合计项。

大侠 抽空您帮我做做好吗?谢谢啦!

TA的精华主题

TA的得分主题

发表于 2018-10-9 09:16 | 显示全部楼层
  1. Sub test()
  2.   Dim r%, i%
  3.   Dim arr, brr, fs(1 To 2)
  4.   Dim d As Object
  5.   Application.ScreenUpdating = False
  6.   Application.DisplayAlerts = False
  7.   Set d = CreateObject("scripting.dictionary")
  8.   Set d1 = CreateObject("scripting.dictionary")
  9.   With Worksheets("基础数据")
  10.     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  11.     c = .Cells(1, .Columns.Count).End(xlToLeft).Column
  12.     bt = .Range("a1").Resize(1, c)
  13.     arr = .Range("a2").Resize(r - 1, c)
  14.   End With
  15.   For j = 1 To UBound(bt, 2)
  16.     If InStr("语文数学英语总分", bt(1, j)) <> 0 Then
  17.       fs(1) = Application.Large(Application.Index(arr, 0, j), 200)
  18.       fs(2) = Application.Small(Application.Index(arr, 0, j), 200)
  19.       If bt(1, j) = "总分" Then
  20.         ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))
  21.         ReDim crr(1 To UBound(arr), 1 To UBound(arr, 2))
  22.         m = 0
  23.         n = 0
  24.         For i = 1 To UBound(arr)
  25.           If arr(i, j) >= fs(1) Then
  26.             m = m + 1
  27.             For k = 1 To UBound(arr, 2)
  28.               brr(m, k) = arr(i, k)
  29.             Next
  30.           End If
  31.           If arr(i, j) <= fs(2) Then
  32.             n = n + 1
  33.             For k = 1 To UBound(arr, 2)
  34.               crr(n, k) = arr(i, k)
  35.             Next
  36.           End If
  37.         Next
  38.       Else
  39.         ReDim brr(1 To UBound(arr), 1 To 8)
  40.         ReDim crr(1 To UBound(arr), 1 To 8)
  41.         m = 0
  42.         n = 0
  43.         For i = 1 To UBound(arr)
  44.           If arr(i, j) >= fs(1) Then
  45.             m = m + 1
  46.             For k = 1 To 6
  47.               brr(m, k) = arr(i, k)
  48.             Next
  49.             brr(m, 7) = arr(i, j)
  50.           End If
  51.           If arr(i, j) <= fs(2) Then
  52.             n = n + 1
  53.             For k = 1 To 6
  54.               crr(n, k) = arr(i, k)
  55.             Next
  56.             crr(n, 7) = arr(i, j)
  57.           End If
  58.         Next
  59.       End If
  60.       If Not d.exists(1) Then
  61.         Set d(1) = CreateObject("scripting.dictionary")
  62.       End If
  63.       If Not d.exists(2) Then
  64.         Set d(2) = CreateObject("scripting.dictionary")
  65.       End If
  66.       d(1)(bt(1, j)) = brr
  67.       d(2)(bt(1, j)) = crr
  68.     End If
  69.   Next
  70.   For Each aa In d.keys
  71.     For Each bb In d(aa).keys
  72.       If bb = "总分" Then
  73.         wjm = bb & IIf(aa = 1, "前", "倒数") & "200名学生"
  74.       Else
  75.         wjm = bb & "单科" & IIf(aa = 1, "前", "倒数") & "200名学生"
  76.       End If
  77.       brr = d(aa)(bb)
  78.       On Error Resume Next
  79.       Set ws = Worksheets(wjm)
  80.       If Err Then
  81.         Set ws = Worksheets.Add(after:=Worksheets(Worksheets.Count))
  82.         ws.Name = wjm
  83.       End If
  84.       On Error GoTo 0
  85.       With Worksheets(wjm)
  86.         .UsedRange.Offset(1, 0).Clear
  87.         .Range("a2").Resize(UBound(brr), UBound(brr, 2)) = brr
  88.         r = .Cells(.Rows.Count, 1).End(xlUp).Row
  89.         c = .Cells(1, .Columns.Count).End(xlToLeft).Column
  90.         If r > 1 Then
  91.           .Range("a1").Resize(r, c).Sort key1:=.Cells(2, IIf(bb = "总分", 10, 7)), order1:=IIf(aa = 1, xlDescending, xlAscending), Header:=xlYes
  92.         End If
  93.       
  94.       End With
  95.     Next
  96.   Next
  97. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 19:38 , Processed in 0.046397 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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