一步一步教你用VBA自动从一个表按条件把数据填充到另一张表
高考上线与未上线统计,下面是某市2013年高考总分与单科分数线
2013年全市文科分数线 | |||||||||||||
全市人数 | 一本分数 | 人数 | 三本分数 | 人数 | |||||||||
567 | 372 | 477 | 4547 | ||||||||||
一本 | 科目 | 语文 | 数学 | 外语 | 政治 | 历史 | 地理 | excel线上教学课程综合 | |||||
人数 | 38 | 76 | 394 | 393 | |||||||||
分数 | 112 | 128 | 128 | 71 | 82 | 74 | 217 | ||||||
三本 | 科目 | 语文 | 数学 | 外语 | 政治 | 历史 | 地理 | 综合 | |||||
人数 | 4739 | 4754 | 469 | 47 | 4575 | ||||||||
分数 | 99 | 1 | 84 | ||||||||||
单科分数线以语文为例:全市一本372人,即语文在372名的分数即为语文的上线分数。这里
关键统计某人总分上了某一分数线,而单科没上分数线的人数。进一步统计上该科老师头上该科是否努力,是不是拖了后腿。
原始成绩放sheet1表中,统计后的数据放sheet2表中,科任教师名单放sheet3表中,数据如下:
原始成绩表sheet1:
姓名 | 班级 | 语文 | 数学 | 外语 | 综合 | 政治 | 历史 | 地理 | 加分 | 总分 |
向恭谱 | 229 | 67 | 84.5 | 77.5 | 0 | 607 | ||||
郑淞方 | 229 | 72.5 | 83 | 73.5 | 0 | 602 | ||||
姜岚 | 00 | |||||||||
沈鑫 | 02 | 108 | .5 | 74 | 78 | 0 | 599 | |||
陈静 | 97 | |||||||||
蒋儒 | 226 | 72 | 81 | 72.5 | 0 | 597 | ||||
张璇琳 | 02 | 116 | 84 | 71.5 | 0 | 596 | ||||
李罗一帆 | 02 | 112 | 79.5 | 73.5 | 0 | 594 | ||||
廖梓君 | 02 | 1 | 72.5 | 83 | 71 | 0 | 594 | |||
何志文 | 235 | 76.5 | 82.5 | 76 | 0 | 592 | ||||
李昀霞 | 02 | 1 | 69 | 77 | 70.5 | 0 | 591 | |||
刘奕伶 | 222 | 69.5 | 84.5 | 68 | 0 | 587 | ||||
赵原巧 | 226 | 71 | 79.5 | 75.5 | 0 | 586 | ||||
黄莹 | 06 | 1 | 76.5 | 82 | 73 | 0 | 587 | |||
雷凯迪 | 06 | 1 | 67.5 | 87 | 64 | 0 | 569 | |||
梁虹 | 206 | 71 | 73.5 | 61.5 | 0 | 567 | ||||
邓铃 | 211 | 65.5 | 72 | 73 | 0 | 566 | ||||
2.科任教师表sheet3
班 | 班主任 | 语文 | 数学 | 外语 | 物理 | 化学 | 生物 |
1 | 肖友老师 | 刘 老师 | 肖友老师 | 肖雪老师 | 张长老师 | 吴明老师 | 王耀老师 |
2 | 陈小老师 | 邓小老师 | 向 老师 | 陈 老师 | 何继老师 | 邓君老师 | 陈小老师 |
3 | 张小老师 | 姚 老师 | 王春老师 | 陈 老师 | 徐文老师 | 王 老师 | 张小老师 |
4 | 鲜松老师 | 李 老师 | 鲜松老师 | 高乐老师 | 冯朝老师 | 李 老师 | 黄家老师 |
5 | 何万老师 | 敬文老师 | 何万老师 | 王文老师 | 张长老师 | 陈 老师 | 黄家老师 |
6 | 唐建老师 | 唐建老师 | 龙泽老师 | 高乐老师 | 魏定老师 | 唐双老师 | 林玉老师 |
7 | 刘 老师 | 姚仁老师 | 刘 老师 | 冯 老师 | 杜 老师 | 吴明老师 | 王耀老师 |
8 | 陈 老师 | 刘 老师 | 罗巧老师 | 赵文老师 | 冯朝老师 | 陈 老师 | 张小老师 |
9 | 邓君老师 | 邓小老师 | 赵元老师 | 贾 老师 | 何继老师 | 邓君老师 | 林玉老师 |
10 | 敬文老师 | 敬文老师 | 鲜松老师 | 王文老师 | 徐文老师 | 吴明老师 | 张小老师 |
3.统计结果sheet2:
班 | 姓名 | 总分 | 类别 | 未上线科目 | 未上线分数 | 科任教师 |
02 | 向恭谱 | 607 | 一本 | 数学 | 126 | 向 老师 |
政治 | 67 | 何继老师 | ||||
02 | 郑淞方 | 602 | 一本 | 数学 | 127 | 向 老师 |
地理 | 73.5 | 陈小老师 | ||||
02 | 姜岚 | 600 | 一本 | 语文 | 110 | 邓小老师 |
政治 | 69 | 何继老师 | ||||
02 | 沈鑫 | 599 | 一本 | 语文 | 108 | 邓小老师 |
历史 | 74 | 邓君老师 | ||||
02 | 陈静 | 597 | 一本 | 数学 | 122 | 向 老师 |
历史 | 81 | 邓君老师 | ||||
02 | 蒋儒 | 597 | 一本 | 外语 | 126 | 陈 老师 |
历史 | 81 | 邓君老师 | ||||
地理 | 72.5 | 陈小老师 | ||||
02 | 张璇琳 | 596 | 一本 | 外语 | 126 | 陈 老师 |
政治 | 68 | 何继老师 | ||||
地理 | 71.5 | 陈小老师 | ||||
02 | 李罗一帆 | 594 | 一本 | 政治 | 69 | 何继老师 |
历史 | 79.5 | 邓君老师 | ||||
地理 | 73.5 | 陈小老师 | ||||
02 | 廖梓君 | 594 | 一本 | 外语 | 125 | 陈 老师 |
地理 | 71 | 陈小老师 | ||||
02 | 何志文 | 592 | 一本 | 数学 | 112 | 向 老师 |
02 | 李昀霞 | 591 | 一本 | 数学 | 127 | 向 老师 |
政治 | 69 | 何继老师 | ||||
历史 | 77 | 邓君老师 | ||||
地理 | 70.5 | 陈小老师 | ||||
02 | 刘奕伶 | 587 | 一本 | 语文 | 110 | 邓小老师 |
数学 | 125 | 向 老师 | ||||
政治 | 69.5 | 何继老师 | ||||
地理 | 68 | 陈小老师 | ||||
02 | 赵原巧 | 586 | 一本 | 语文 | 110 | 邓小老师 |
数学 | 120 | 向 老师 | ||||
历史 | 79.5 | 邓君老师 | ||||
06 | 黄莹 | 587 | 一本 | 数学 | 119 | 龙泽老师 |
外语 | 123 | 高乐老师 | ||||
地理 | 73 | 林玉老师 | ||||
06 | 雷凯迪 | 569 | 一本 | 数学 | 109 | 龙泽老师 |
政治 | 67.5 | 魏定老师 | ||||
地理 | 64 | 林玉老师 | ||||
06 | 梁虹 | 567 | 一本 | 语文 | 110 | 唐建老师 |
数学 | 126 | 龙泽老师 | ||||
外语 | 125 | 高乐老师 | ||||
历史 | 73.5 | 唐双老师 | ||||
地理 | 61.5 | 林玉老师 | ||||
下面介绍具体的操作步骤:
把成绩数据按上表的格式放sheet1表中,把科任教师信息看上述格式放sheet3表中。
建立一个VBA;选中sheet2表,点菜单-- --宏---Visual Basic编辑器,打开VBA编辑器。
点插入菜单---模块;双击新建的模块1;再点插入菜单下的过程,输入过程名,然后进入代码编辑,把下面的代码复制入代码框即可
Public Sub 测试()
Dim x, y, z, v, bj, bx As Long
x = 2
z = 2
For v = 2 To 2270
If Sheet1.Cells(z, 11) < 710 Then
If Sheet1.Cells(z, 11) >= 567 Then
Sheet2.Cells(x, 2) = Sheet1.Cells(z, 1)
Sheet2.Cells(x, 1) = Sheet1.Cells(z, 2)
Sheet2.Cells(x, 3) = Sheet1.Cells(z, 11)
Sheet2.Cells(x, 4) = "一本"
bj = Sheet1.Cells(z, 2)
'语文
If Sheet1.Cells(z, 3) < 112 Then
Sheet2.Cells(x, 5) = Sheet1.Cells(1, 3)
Sheet2.Cells(x, 6) = Sheet1.Cells(z, 3)
Sheet2.Cells(x, 7) = Sheet3.Cells(bj + 1, 3)
x = x + 1
End If
'数学
If Sheet1.Cells(z, 4) < 128 Then
Sheet2.Cells(x, 5) = Sheet1.Cells(1, 4)
Sheet2.Cells(x, 6) = Sheet1.Cells(z, 4)
Sheet2.Cells(x, 7) = Sheet3.Cells(bj + 1, 4)
x = x + 1
End If
'英语
If Sheet1.Cells(z, 5) < 128 Then
Sheet2.Cells(x, 5) = Sheet1.Cells(1, 5)
Sheet2.Cells(x, 6) = Sheet1.Cells(z, 5)
Sheet2.Cells(x, 7) = Sheet3.Cells(bj + 1, 5)
x = x + 1
End If
'政治
If Sheet1.Cells(z, 7) < 71 Then
Sheet2.Cells(x, 5) = Sheet1.Cells(1, 7)
Sheet2.Cells(x, 6) = Sheet1.Cells(z, 7)
Sheet2.Cells(x, 7) = Sheet3.Cells(bj + 1, 6)
x = x + 1
End If
'历史
If Sheet1.Cells(z, 8) < 82 Then
Sheet2.Cells(x, 5) = Sheet1.Cells(1, 8)
Sheet2.Cells(x, 6) = Sheet1.Cells(z, 8)
Sheet2.Cells(x, 7) = Sheet3.Cells(bj + 1, 7)
x = x + 1
End If
'地理
If Sheet1.Cells(z, 9) < 74 Then
Sheet2.Cells(x, 5) = Sheet1.Cells(1, 9)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论