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. Node.js实践

    在 iOS 模拟器中调试 Web 页面 safari调试iOS App web 1, npm init 2, npm install ejs --save 简单Node 指令 $ node -v  / ...

  2. topcoder srm 699 div1 -3

    1.两个长度为$n$的数组$a,b$,$0 \leq a_{i} <2^{30}$.$b_{i}=-1$或者$b_{i}$为除$a_{i}$外其他数字的抑或值.现在给定$b$,如果不存在$a$, ...

  3. Python3 tkinter基础 Entry insert delete 点击按钮 向输入框赋值 或 清空

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  4. 【lg1799】数列

    题目描述 虽然msh长大了,但她还是很喜欢找点游戏自娱自乐.有一天,她在纸上写了一串数字:1,l,2,5,4.接着她擦掉了一个l,结果发现剩下l,2,4都在自己所在的位置上,即1在第1位,2在第2位, ...

  5. LuoguP2257 YY的GCD

    题目描述 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 kAc这种傻×必然不会了,于 ...

  6. hotmail 发送邮件 的服务器地址如下

    hotmail的服务器地址如下: pop服务器地址:pop-mail.outlook.com smtp服务器地址:smtp-mail.outlook.com imap服务器地址:imap-mail.o ...

  7. SP3946 MKTHNUM - K-th Number(整体二分)

    思路 整体二分的板子题,没什么思路好说 代码 #include <cstdio> #include <algorithm> #include <cstring> u ...

  8. Math.random 随机数方法

    随机取数方法 Math.random() 表示0到1之间随机取一个数 <x< 小数 Math.random()* 表示0<x< parseInt(Math.random()*) ...

  9. 使用CSS实现三栏自适应布局(两边宽度固定,中间自适应)

    来源:http://blog.csdn.net/cinderella_hou/article/details/52156333 所谓三列自适应布局指的是两边定宽,中间block宽度自适应.这道题在今年 ...

  10. Java方法中捕获多个异常的处理机制

    /** * @author wangyunhan * @throws Exception */ public static void main(String[] argßs) throws Excep ...