ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何将学校各班级各科成绩的前N名或后N名的学生详细信息快速导出

如何将学校各班级各科成绩的前N名或后N名的学生详细信息快速导出

作者:绿色风 分类: 时间:2022-08-18 浏览:272
楼主
yjzstar
Q:已知某学校各班级学生的各科成绩,如何快的将所有班级学生各科成绩的前N名或后N名提取出来?

A:利用VBA,通过循环排序和取数能快速的将所有班级学生各科成绩的前N名或后N名提取出来,具体如附件!
  1. Sub dd()
  2.     Dim rng As Range
  3.     Dim rng1 As Range
  4.     Dim n As Integer, n1 As Integer, n2 As Long
  5.     Application.ScreenUpdating = False
  6.     n = InputBox("如需要提取前N名输入2;后N名输入1:")
  7.     n1 = InputBox("请输入需要提取的名次数,如提取前10名则输入10")
  8.     With Sheet3
  9.         .Activate
  10.         n2 = .Cells(Rows.Count, 1).End(xlUp).Row
  11.         Set rng = .Range("A1:L1182")
  12.     End With
  13.     Sheet2.Range("a2:e" & Sheet2.Cells(Rows.Count, 1).End(xlUp).Row).Clear
  14.     For i = 4 To 12
  15.         With Sheet3
  16.             rng.Sort .Range("c1"), 1, .Columns(i), , n, , , xlYes
  17.             Set rng1 = .Range("C2")
  18.         End With
  19.         x = 0
  20.         Do
  21.             If rng1 <> rng1.Offset(-1, 0) Then
  22.                 If rng1.Offset(0, i - 3) <> "" Then
  23.                     For j = 0 To n1 - 1
  24.                         With Sheet2
  25.                             .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = rng1.Offset(, -2)
  26.                             .Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = rng1.Offset(, -1)
  27.                             .Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) = rng1
  28.                             .Cells(Rows.Count, 4).End(xlUp).Offset(1, 0) = Sheet3.Range(Cells(1, i), Cells(1, i))
  29.                             .Cells(Rows.Count, 5).End(xlUp).Offset(1, 0) = rng1.Offset(0, i - 3)
  30.                         End With
  31.                         x = x + 1
  32.                         Set rng1 = rng1.Offset(1, 0)
  33.                     Next
  34.                 End If
  35.             End If
  36.             x = x + 1
  37.             Set rng1 = rng1.Offset(1, 0)
  38.         Loop Until x = n2
  39.     Next
  40.     Application.ScreenUpdating = True
  41. End Sub

有难度,提取数值,请求帮助!.rar
2楼
wise
还用65536
3楼
yjzstar
W版,我错了,下次一定改!
4楼
jpwjpw
yjzstar老师您好,请帮忙再修改一下代码,谢谢!(有一点变动),都怪我以前没有考虑周全。拜托了!附件我已经发了。
请帮忙修改代码,谢谢!.zip
5楼
yjzstar
晚上回去看下哦!白天不能上网
6楼
jpwjpw
好的,谢谢!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap