ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何将各年级各成绩 汇总到总表中

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-1-23 16:23 | 显示全部楼层
jacking03 发表于 2017-1-23 15:08
说明:1.语文120以上为A,105分以上为B,90分以上为C,90分以下为D。 其他各科分值150分的,127.5为A,其他一 ...

不清楚各年级各科满分是多少。

TA的精华主题

TA的得分主题

发表于 2017-1-23 16:29 | 显示全部楼层
你把总表中的“参数表”填写完整,就是等级分数段的分数。

第二次月考.rar

602.99 KB, 下载次数: 29

TA的精华主题

TA的得分主题

发表于 2017-1-23 17:03 | 显示全部楼层
本帖最后由 jacking03 于 2017-1-23 17:16 编辑

年级        科目        A        B        C        D
七年级        语文        80        70        60        0
        数学        85        70        60        0
        英语        85        70        60        0
        物理        0        0        0        0
        化学        0        0        0        0
        生物        85        70        60        0
        政治        85        70        60        0
        历史        85        70        60        0
        地理        85        70        60        0
八年级        语文        120        105        90        0
        数学        127.5        105        90        0
        英语        127.5        105        90        0
        物理        85        70        60        0
        化学        0        0        0        0
        生物        85        70        60        0
        政治        85        70        60        0
        历史        85        70        60        0
        地理        85        70        60        0
九年级        语文        120        105        90        0
        数学        127.5        105        90        0
        英语        127.5        105        90        0
        物理        85        70        60        0
        化学        85        70        60        0
        生物        85        70        60        0
        政治        85        70        60        0
        历史        0        0        0        0
        地理        0        0        0        0

TA的精华主题

TA的得分主题

发表于 2017-1-23 17:19 | 显示全部楼层
年级        科目        A        B        C        D
七年级        语文        80        70        60        0
        数学        85        70        60        0
        英语        85        70        60        0
        物理                               
        化学                               
        生物        85        70        60        0
        政治        85        70        60        0
        历史        85        70        60        0
        地理        85        70        60        0
八年级        语文        120        105        90        0
        数学        127.5        105        90        0
        英语        127.5        105        90        0
        物理        85        70        60        0
        化学                               
        生物        85        70        60        0
        政治        85        70        60        0
        历史        85        70        60        0
        地理        85        70        60        0
九年级        语文        120        105        90        0
        数学        127.5        105        90        0
        英语        127.5        105        90        0
        物理        85        70        60        0
        化学        63.5        52.5        45        0
        生物        85        70        60        0
        政治        85        70        60        0
        历史        85        70        60        0
        地理        85        70        60        0

TA的精华主题

TA的得分主题

发表于 2017-1-23 18:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
七年级各科都是100分制,只有语文80分A,其余都是85分为A;
八九年级语数英是150分,,只有语文120分A,数学英语127.5A,,, 其余各科均为100分,85分A,,
九年级化学满分75分,63.5为A,52.5为B,45为C

TA的精华主题

TA的得分主题

发表于 2017-1-23 18:32 | 显示全部楼层
现在还无法上传附件,望老师海涵赐教

TA的精华主题

TA的得分主题

发表于 2017-1-23 19:05 | 显示全部楼层
  1. Sub test2()
  2.   Dim r%, i%
  3.   Dim arr, brr
  4.   Dim wb As Workbook
  5.   Dim ws As Worksheet
  6.   Dim mypath$, myname$
  7.   Dim d As Object
  8.   tt = Timer
  9.   Application.ScreenUpdating = False
  10.   Application.DisplayAlerts = False
  11.   Set d = CreateObject("scripting.dictionary")
  12.   Set d1 = CreateObject("scripting.dictionary")
  13.   Set dcs = CreateObject("scripting.dictionary")
  14.   With Worksheets("参数表")
  15.     r = .Cells(.Rows.Count, 2).End(xlUp).Row
  16.     arr = .Range("a1:f" & r)
  17.     For i = 2 To UBound(arr)
  18.       If Len(arr(i, 1)) <> 0 Then
  19.         nj = arr(i, 1)
  20.       End If
  21.       If Not dcs.exists(nj) Then
  22.         Set dcs(nj) = CreateObject("scripting.dictionary")
  23.       End If
  24.       dcs(nj)(arr(i, 2)) = Array(arr(i, 3), arr(i, 4), arr(i, 5), arr(i, 6))
  25.     Next
  26.   End With
  27.   mypath = ThisWorkbook.Path & ""
  28.   myname = Dir(mypath & "*.xls")
  29.   With Worksheets("sheet1")
  30.     c = .Cells(1, .Columns.Count).End(xlToLeft).Column
  31.     bt = .Range("a1").Resize(1, c)
  32.     For j = 1 To UBound(bt, 2)
  33.       d1(bt(1, j)) = j
  34.     Next
  35.   End With
  36.   Do While myname <> ""
  37.     If myname <> ThisWorkbook.Name Then
  38.       Set wb = GetObject(mypath & myname)
  39.       With wb
  40.         With .Worksheets(1)
  41.           r = .Cells(.Rows.Count, 1).End(xlUp).Row
  42.           If r > 1 And .Range("a1") = "年级" And d1.exists(.Range("g1").Value) Then
  43.             arr = .Range("a1:g" & r)
  44.             n = d1(arr(1, 7))
  45.             For i = 2 To UBound(arr)
  46.               If Len(arr(i, 3)) <> 0 Then
  47.                 If Not d.exists(CStr(arr(i, 3))) Then
  48.                   ReDim brr(1 To d1.Count)
  49.                   For j = 1 To 6
  50.                     brr(j) = arr(i, j)
  51.                   Next
  52.                 Else
  53.                   brr = d(CStr(arr(i, 3)))
  54.                 End If
  55.                 brr(n) = arr(i, 7)
  56.                 d(CStr(arr(i, 3))) = brr
  57.               End If
  58.             Next
  59.           End If
  60.         End With
  61.         .Close False
  62.       End With
  63.     End If
  64.     myname = Dir
  65.   Loop
  66.   With Worksheets("sheet1")
  67.     .UsedRange.Offset(1, 0).Clear
  68.     arr = Application.Transpose(Application.Transpose(d.items))
  69.     For i = 1 To UBound(arr)
  70.       d1.RemoveAll
  71.       If dcs.exists(arr(i, 1)) Then
  72.         For j = 7 To 25 Step 2
  73.           If Len(arr(i, j)) <> 0 Then
  74.             arr(i, 27) = arr(i, 27) + arr(i, j)
  75.             If dcs(arr(i, 1)).exists(bt(1, j)) Then
  76.               brr = dcs(arr(i, 1))(bt(1, j))
  77.               n = 69 - Application.Match(arr(i, j), brr, 1)
  78.               arr(i, j + 1) = Chr(n)
  79.               d1(arr(i, j + 1)) = d1(arr(i, j + 1)) + 1
  80.             End If
  81.           End If
  82.         Next
  83.       End If
  84.       If d1.Count > 0 Then
  85.         ss = ""
  86.         For Each x In Array("A", "B", "C", "D")
  87.           If d1.exists(x) Then
  88.             ss = ss & d1(x) & x
  89.           End If
  90.         Next
  91.         arr(i, 26) = ss
  92.       End If
  93.     Next
  94.     .Range("a2").Resize(UBound(arr), UBound(arr, 2)) = arr
  95.     .Range("a1:ad" & UBound(arr) + 1).Borders.LineStyle = xlContinuous
  96.     Application.ScreenUpdating = True
  97.     MsgBox "数据提取统计完毕!共用时" & Timer - tt & "秒"
  98.   End With
  99. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2017-1-23 19:05 | 显示全部楼层
修改好了。

第二次月考.rar

627.64 KB, 下载次数: 27

TA的精华主题

TA的得分主题

发表于 2017-1-23 20:57 | 显示全部楼层
修改了一下参数表格式。

第二次月考.rar

627.32 KB, 下载次数: 25

TA的精华主题

TA的得分主题

发表于 2017-1-23 21:23 | 显示全部楼层
感谢chxw68 老师,让您费心了。下载使用发现运行到 arr(i, 27) = arr(i, 27) + arr(i, j)出错了

是不是因为改了格式呢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-24 20:50 , Processed in 0.060634 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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