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. 使用SimpleDateFormat时的日期和时间模式

    日期和时间模式 日期和时间格式由日期和时间模式 字符串指定.在日期和时间模式字符串中,未加引号的字母 ‘A’ 到’Z’ 和’a’ 到’z’ 被解释为模式字母,用来表示日期或时间字符串元素.文本可以使用 ...

  2. oracle单行函数 之 字符函数

    Upper(字符串 / 列):将输入的字符串变成大写 Lower(字符串 / 列):将输入的字符串变成小写 Initcap(字符串 / 列):开头首字母大写 Length(字符串 / 列):字符串长度 ...

  3. 论文笔记:Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments

    Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments 2017-10-25  16:38:23   [Proj ...

  4. CSS3实现基本图形

    http://blog.csdn.net/laokdidiao/article/details/51189476 代码: <!DOCTYPE html> <html> < ...

  5. 每天一个小程序—第0001题(uuid模块)

    第 0001 题:  做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? 一开始以为是 ...

  6. Ural 1297 Palindrome(后缀数组+最长回文子串)

    https://vjudge.net/problem/URAL-1297 题意: 求最长回文子串. 思路: 先将整个字符串反过来写在原字符串后面,中间需要用特殊字符隔开,那么只需要某两个后缀的最长公共 ...

  7. ADO.NET DBHelper

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...

  8. Javascript中点击(click)事件的3种写法

    方法一 <!DOCTYPE html> <html> <head> <title>Javascript中点击事件方法一</title> &l ...

  9. format格式化函数

    注意:列表索引设置参数,‘0’是必须的.

  10. confirm("确定要删除吗?") _详解

    具体代码如下: html代码: <div class="deletes">删除</div> js代码: <script type="text ...