Sub 计算高一优秀合格率()
Dim Wb As Workbook
Dim Sht As Worksheet
Dim oSht As Worksheet
Dim dOs As Object 'OutStanding
Const SUBJECTS = "语文数学英语物理化学生物政治历史地理"
Set dOs = CreateObject("Scripting.Dictionary")
Set Wb = Application.ThisWorkbook
Set Sht = Wb.Worksheets("年级_本次成绩总表") With Sht
EndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
EndCol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
For j = 4 To EndCol
If InStr(SUBJECTS, .Cells(1, j).Text) > 0 Then
Subject = .Cells(1, j).Text
For i = 2 To EndRow
If .Cells(i, "Y").Value = "" Then
goal = .Cells(i, j).Value
Cls = .Cells(i, 3).Value
Key = Cls & ";" & Subject
If goal <> "" Then
If Not dOs.exists(Key) Then
If goal >= OsLine(Subject, 1) Then
os = 1
Else
os = 0
End If
If goal >= OsLine(Subject, 2) Then
pass = 1
Else
pass = 0
End If
dOs(Key) = Array(1, os, pass)
Else
Ar = dOs(Key)
Ar(0) = Ar(0) + 1
If goal >= OsLine(Subject, 1) Then Ar(1) = Ar(1) + 1
If goal >= OsLine(Subject, 2) Then Ar(2) = Ar(2) + 1
dOs(Key) = Ar
End If
End If
End If
Next i
End If
Next j
End With 'For Each OneKey In dOs.keys
'Ar = dOs(OneKey)
'Debug.Print OneKey; " "; Ar(0); " "; Ar(1); " "; Ar(2)
'Next Set Sht = Wb.Worksheets("年级_各科离均率")
With Sht
StartRow = 60
ClassCount = 20
SubjectCount = 10
.Cells(StartRow + 1, 2).Resize(ClassCount, SubjectCount).ClearContents
For j = 2 To SubjectCount + 1
Subject = .Cells(StartRow, j).Value
For i = StartRow + 1 To StartRow + 20
Cls = .Cells(i, 1).Value
Key = Cls & ";" & Subject
If dOs.exists(Key) Then
Ar = dOs(Key)
.Cells(i, j).Value = Format(Ar(1) / Ar(0), "0.0%")
End If
Next i
Next j StartRow = 84
ClassCount = 20
SubjectCount = 10
.Cells(StartRow + 1, 2).Resize(ClassCount, SubjectCount).ClearContents
For j = 2 To SubjectCount + 1
Subject = .Cells(StartRow, j).Value
For i = StartRow + 1 To StartRow + 20
Cls = .Cells(i, 1).Value
Key = Cls & ";" & Subject
If dOs.exists(Key) Then
Ar = dOs(Key)
.Cells(i, j).Value = Format(Ar(2) / Ar(0), "0.0%")
End If
Next i
Next j End With End Sub
Function OsLine(ByVal Subject As String, ByVal Level As Long) As Double 'Level 1优秀0合格
Select Case Subject
Case "语文", "数学", "英语"
If Level = 1 Then
OsLine = 120
Else
OsLine = 90
End If
Case Else
If Level = 1 Then
OsLine = 80
Else
OsLine = 60
End If
End Select
End Function

  

20181013xlVba计算优秀率及合格率的更多相关文章

  1. 分析业务模型-类图(Class Diagram)

    分析业务模型-类图(Class Diagram)     分析业务模型-类图(Class Diagram)(上) 摘要:类图(Class Diagram)可能是用得最多的一种UML图.类图的基本语法并 ...

  2. 直击Huawei Mate 40产线背后的华为云IoT智能制造

    摘要:数字孪生?在数字世界找到物理世界的设备! 本文分享自华为云社区<[云驻共创]Huawei Mate 40产线直击之华为云IoT智能制造助力工厂数字化转型>,原文作者:启明. Part ...

  3. 前端极易被误导的css选择器权重计算及css内联样式的妙用技巧

    记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前 ...

  4. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  5. C语言 · 薪水计算

    问题描述 编写一个程序,计算员工的周薪.薪水的计算是以小时为单位,如果在一周的时间内,员工工作的时间不超过40 个小时,那么他/她的总收入等于工作时间乘以每小时的薪水.如果员工工作的时间在40 到50 ...

  6. C语言 · 阶乘计算 · 基础练习

    问题描述 输入一个正整数n,输出n!的值. 其中n!=1*2*3*-*n. 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法.使用一个数组A来表示一个大整数a,A[0]表 ...

  7. C语言 · 最大值与最小值计算

    输入11个整数,计算它们的最大值和最小值. 样例输入 0 1 2 3 4 5 6 7 8 9 10 样例输出 10 0   #include<stdio.h> int main(){ ]; ...

  8. 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Ser ...

  9. SQL Server-聚焦计算列或计算列持久化查询性能(二十二)

    前言 上一节我们详细讲解了计算列以及计算列持久化的问题,本节我们依然如前面讲解来看看二者查询性能问题,简短的内容,深入的理解,Always to review the basics. 持久化计算列比非 ...

随机推荐

  1. 比较实用的前端 js框架 ,组件 汇总

    一.js 前端ui框架 Kendo UI 商用收费,组件丰富,界面简洁美观,有jQuery和angular两个js的版本 Webix 商用收费,组件丰富,界面特别美观 JQwidgets 商用收费,丰 ...

  2. git删除远程分支文件,不改变本地文件

    git提交项目时候踩的Git的坑 特别 由于准备春招,所以希望各位看客方便的话,能去github上面帮我Star一下项目 https://github.com/Draymonders/Campus-S ...

  3. P2617 Dynamic Rankings(带修主席树)

    所谓带修主席树,就是用树状数组的方法维护主席树的前缀和 思路 带修主席树的板子 注意数据范围显然要离散化即可 代码 #include <cstdio> #include <cstri ...

  4. 题解——loj6281 数列分块入门5 (分块)

    分块 若块内最大值为0或1,则不用再开方 然后暴力修改 可以证明,如果开方后向下取整,则最多开方4次一个数就会变成0或1 #include <cstdio> #include <cm ...

  5. GPIO实验之c语言

    上一章节进行实验使用的是汇编进行编程的,本次实验是使用c语言进行编写的. (1)点亮一个led灯   1)启动文件:    crt.S   .text   .global _start   _star ...

  6. lvs笔记

    LVS是Linux Virtual Server的简写,意为Linux虚拟服务器,是虚拟的服务器集群系统,可在UNIX/LINUX平台下实现负载均衡集群功能.该项目在1998年5月由章文嵩博士组织成立 ...

  7. 什么是mvc?

    MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型  (Model).视图(View)和控制器(Controller).      ...

  8. appium长按按钮

    public static AndroidDriver driver; /长按操作:waitAction的参数单位是ms/ public static void longClick(String id ...

  9. C#——LINQ语句

    委托: //delegate 返回值 委托名(参数); //委托不能在方法中定义 ////实例化委托,并赋值 //委托名 实例名 = new 委托名(函数名).lambda表达式; //使用委托实例, ...

  10. TCGA收官之作—27篇重磅文献绘制“泛癌图谱”

    TCGA的关键数字:图片来源<细胞> 由美国政府发起的癌症和肿瘤基因图谱(Cancer Genome Atlas,TCGA)计划于2006年联合启动,目前已经收录了来自1万多例病人的33种 ...