Sub 导入成绩()Const TargetSheet = "年级_原始成绩汇总"Const DesSheet = "年级_本次成绩总表"Application.ScreenUpdating = FalseApplication.DisplayAlerts = FalseDim Wb As Workbook, Sht As WorksheetDim OpenWb As Workbook, OpenSht As WorksheetDim FilePath, FilePaths, SheetNameDim dGoal As ObjectDim EndRow As Long, EndCol As LongDim Arr As VariantDim Id As String, Sbj As String, Key As StringConst START_COLUMN As Long = 3Const START_ROW As Long = 1Set dGoal = CreateObject("Scripting.Dictionary")'读取外部文件的成绩FilePaths = PickFilesArr("*.xls*")If FilePaths(1) <> "NULL" ThenFor Each FilePath In FilePaths'Debug.Print FilePathSet OpenWb = Application.Workbooks.Open(FilePath)Set OpenSht = OpenWb.Worksheets(1)With OpenShtEndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).RowEndCol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).ColumnSet Rng = .Range(.Cells(START_ROW, 1), .Cells(EndRow, EndCol))Arr = Rng.ValueFor i = LBound(Arr) + START_ROW To UBound(Arr)Id = CStr(Arr(i, 1))For j = LBound(Arr, 2) + START_COLUMN To UBound(Arr, 2)Sbj = CStr(Arr(1, j))Key = Id & ";" & SbjdGoal(Key) = Arr(i, j)'Debug.Print Key; " "; Arr(i, j)Next jNext iEnd WithOpenWb.CloseNext FilePathElseMsgBox "未选中任何文件!", vbInformation, "Information"End If'更新内部Set Wb = Application.ThisWorkbookFor Each Sht In Wb.WorksheetsIf Sht.Name Like "单科成绩_*" ThenWith ShtEndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).RowEndCol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).ColumnSet Rng = .Range(.Cells(START_ROW, 1), .Cells(EndRow, EndCol))Arr = Rng.ValueFor i = LBound(Arr) + START_ROW To UBound(Arr)Id = CStr(Arr(i, 1))For j = LBound(Arr, 2) + START_COLUMN To UBound(Arr, 2)Sbj = CStr(Arr(1, j))Key = Id & ";" & SbjIf dGoal.exists(Key) Then Arr(i, j) = dGoal(Key)Next jNext iRng.Value = ArrEnd WithEnd IfNext Sht'输出每人每科成绩,缺考的成绩为空Set Sht = Wb.Worksheets(TargetSheet)With Sht.UsedRange.Offset(1, 3).ClearContentsEndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).RowEndCol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).ColumnFor i = START_ROW + 1 To EndRowId = .Cells(i, 1).TextFor j = START_COLUMN + 1 To EndColSbj = .Cells(1, j).TextKey = Id & ";" & SbjIf dGoal.exists(Key) Then.Cells(i, j).Value = dGoal(Key)Else.Cells(i, j).Value = ""End IfNext jNext i'插入排名公式For j = START_COLUMN + 1 To EndColIf .Cells(1, j).Value Like "*排" ThenSet Rng = .Range(.Cells(2, j), .Cells(EndRow, j))Rng.FormulaR1C1 = "=IF(RC[-1]<>"""",RANK(RC[-1],R2C[-1]:R" & EndRow & "C[-1]),"""")"ElseIf .Cells(1, j).Value = "总分" ThenSet Rng = .Range(.Cells(2, j), .Cells(EndRow, j))Rng.FormulaR1C1 = "=IF(COUNTA(RC[-18],RC[-16],RC[-14],RC[-12],RC[-10],RC[-8],RC[-6],RC[-4],RC[-2])=9,SUM(RC[-18],RC[-16],RC[-14],RC[-12],RC[-10],RC[-8],RC[-6],RC[-4],RC[-2]),"""")"End IfNext jEndRow = .Cells.Find("*", .Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).RowEndRow = .Cells.Find("*", .Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).RowSet Rng = .Range(.Cells(1, 1), .Cells(EndRow, EndCol))Arr = Rng.ValueEnd With'复制成绩 去除公式Set oSht = Wb.Worksheets(DesSheet)With oSht.Cells.ClearContentsSet Rng = .Range(.Cells(1, 1), .Cells(EndRow, EndCol))Rng.Value = ArrSetBorders .UsedRangeSetCenters .UsedRange.UsedRange.Columns.AutoFit'插入缺考标志EndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).RowFor i = 2 To EndRow.Range("X1").Value = "是否缺考"If Application.WorksheetFunction.CountA(.Cells(i, 4).Resize(1, 20)) < 20 Then.Cells(i, "X").Value = "缺考"End IfNext iConst STUDENTS = "".Range("Y1").Value = "考生类别"For i = 2 To EndRowIf InStr(STUDENTS, .Cells(i, 2).Value) > 0 Then.Cells(i, "Y").Value = "其他"End IfNext iEnd WithSet Sht = NothingSet oSht = NothingSet Rng = NothingSet dGoal = NothingApplication.ScreenUpdating = TrueApplication.DisplayAlerts = TrueEnd Sub
Function PickFilesArr(Optional FileTypeFilter As String = "", Optional FileNameContain As String = "*", Optional FileNameNotContain As String = "") As String()Dim FilePath As StringDim Arr() As StringReDim Arr(1 To 1)Dim FileCount As LongDim i As LongFileCount = 0With Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = True.InitialFileName = Application.ActiveWorkbook.Path.Title = "请选择你需要的文件".Filters.ClearIf Len(FileTypeFilter) > 0 Then.Filters.Add "您需要的文件类型", FileTypeFilterEnd IfIf .Show = -1 ThenArr(1) = "NULL"For i = 1 To .SelectedItems.CountIf .SelectedItems(i) Like FileNameContain ThenIf Len(FileNameNotContain) = 0 ThenFileCount = FileCount + 1ReDim Preserve Arr(1 To FileCount)Arr(FileCount) = .SelectedItems(i)Debug.Print Arr(FileCount)ElseIf Not .SelectedItems(i) Like FileNameNotContain ThenFileCount = FileCount + 1ReDim Preserve Arr(1 To FileCount)Arr(FileCount) = .SelectedItems(i)End IfEnd IfEnd IfNext iPickFilesArr = ArrElse'MsgBox "Pick no file!"Arr(1) = "NULL"PickFilesArr = ArrExit FunctionEnd IfEnd With
End Function

  

转载于:https://www.cnblogs.com/nextseven/p/9784105.html

20181013xlVba导入成绩相关推荐

  1. 教师php一对一修改成绩,【教师助手】班小二发成绩,一键导入成绩表格,自动一对一私密分发...

    期中将至 老师们又要开始检验 学生们开学以来的学习情况啦! 然而, 每当小测验结束, 老师们又要犯难了,成绩如何发布呢? 发微信群里?可能会伤了某些同学的自尊心: 一个个私聊发送?又非常耗费时间精力. ...

  2. 通过Excel批量导入成绩数据并分批次插入(数据量比较大的时候)

    1.入口 @RequestMapping(value = "/importNewPracticeScore",method=RequestMethod.POST)@Response ...

  3. 服务器项目导入成绩,用Excel服务器统计学生成绩(4)

    用Excel服务器统计学生成绩(4) 五.建立"成绩汇总"模板 录像 1.建立模板 点击"模板"-"新建模板",选择"新建&quo ...

  4. 未来星计算机一级分数截图,学生成绩统计与分析系统2.0(全新升级)

    学生成绩统计与分析系统2.0 本系统主要利用Excel VBA编程设计而成,用于中小学学校一个年级的成绩统计与分析.软件集学生成绩的录入.统计计算.图表绘制.考场编排.数据导出.数据查询.数据打印.生 ...

  5. python实现成绩分析并实现可视化

    写在前面 小班的高数段考成绩出来了,惨不忍睹,于是我想可视化看看到底有多惨- 代码有点凌乱,因为直接在Jupyter上想到啥就瞎敲的啥,以下也是ipynb文件直接转换过来的,(抽空整理了一下,前面的两 ...

  6. Springboot Excel批量导入数据

    POI处理Excel <!-- poi处理excel --><dependency><groupId>org.apache.poi</groupId>& ...

  7. 易查分怎么上传成绩?

    当使用易查分制作查询系统时,许多老师可能对于如何上传成绩感到困惑.有时候,导入成绩到易查分系统后,信息可能无法完全显示,而且也很难找到错误的原因.因此,今天我将与老师们分享一下易查分上传成绩的方法.这 ...

  8. 易查分怎么上传成绩?学会这个技巧,轻松搞定

    当使用易查分制作查询系统时,许多老师可能对于如何上传成绩感到困惑.有时候,导入成绩到易查分系统后,信息可能无法完全显示,而且也很难找到错误的原因.因此,今天我将与老师们分享一下易查分上传成绩的方法.这 ...

  9. 教学信息管理系统+SQL

    第一章  需求分析 1.课程设计的目的: 通过本次综合实训,使学生完成以下目标: (1)掌握数据库的基础知识,具有分析和解决数据库领域复杂工程问题的能力: (2)能基于数据库技术的专业知识,具备针对复 ...

最新文章

  1. Window对象中setInterval()和setTimeout()的区别
  2. Oracle DBWR,LGWR,CKPT,ARCH 触发条件 总结
  3. 用户sa 登陆失败 SQLServer 错误18456----解决方法
  4. MDK调试:设置断点处,代码运行的次数
  5. 【Spring Cloud】保护机制-Hystrix
  6. Ubuntu ufw 取消 网关到 224.0.0.1 multicast 日志
  7. Linux 命令(33)—— uname 命令
  8. DoYourData Start Menu for Mac界面介绍使用指南
  9. 2019年中国大学生计算机设计大赛国赛答辩
  10. atx20pin电源短接_ATX电源20针及24针接口定义
  11. 怎样在Apple Silicon M1 Mac上引导到恢复模式
  12. 行为/心理健康软件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  13. 手机网络IP地址问题
  14. hdu-6638 Snowy Smile
  15. 接入微信提现Api(企业付款到零钱--向微信用户个人付款)
  16. ABP开发框架的总体介绍
  17. android framework-zygote进程
  18. 苹果手机安装fiddler证书抓包https流程
  19. 普林斯顿 计算机专业排名,普林斯顿大学计算机排名2020年全球超级有用干货
  20. PuTTY 中文教程A

热门文章

  1. 从0到1,了解NLP中的文本相似度 1
  2. 使用Go语言从零编写PoS区块链(译)
  3. Deep learning:一(基础知识_1)
  4. Android 安全专项-Xposed 劫持用户名密码实践
  5. 区块链数字广告项目-【DadxChain】
  6. java二维矩阵怎么进行转置_矩阵求导的本质与分子布局、分母布局的本质(矩阵求导——本质篇)...
  7. python边缘检测代码_Python中的边缘检测
  8. 在MATLAB中读取同一路径下多个txt或mat文件
  9. [模版] 网络流最大流、费用流
  10. 城市问题(Floyd)