Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3877|回复: 10

[已解决]vba先排序、再导出

[复制链接]
发表于 2014-12-7 11:55 | 显示全部楼层 |阅读模式
本帖最后由 武林长风 于 2014-12-10 18:03 编辑

用一个代码对下列工作表先排序、再导出。
排序要求:
1、学校汇总表按学校的总名次排列:1、2、3、4、5、6……
2、英语、科学、品德、语数统计:各年级分别按名次排列:1、2、3、4、5、6……
3、及格率、优秀率:每一科都按百分比把学校由高到低排列。
导出要求:
在当前文件夹里(排序导出)新建一个导出数据工作簿,并复制“学校汇总表、英语统计、科学统计、思品统计、语数统计、及格率、优秀率”这几个工作表到新建的导出数据工作簿里。
所有的汇总要有表格的边框线。
排序导出.rar (45.56 KB, 下载次数: 9)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2014-12-7 14:36 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-12-7 18:27 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-12-7 18:28 | 显示全部楼层
别沉下去了。{:2412:}
回复

使用道具 举报

发表于 2014-12-9 14:34 | 显示全部楼层
  1. Sub tt()
  2.     Dim thwb As Workbook, wb As Workbook, sh As Worksheet
  3.     Set thwb = ThisWorkbook
  4.     Set wb = Workbooks.Add
  5.     thwb.Worksheets(Array("学校汇总表", "英语统计", "科学统计", "思品统计", "语数统计", "及格率", "优秀率")).Copy _
  6.         after:=wb.Sheets(wb.Sheets.Count)            '工作表复制
  7.     For Each sh In wb.Worksheets
  8.         If sh.Name = "学校汇总表" Then     '学校汇总表排序
  9.             r = sh.[a65536].End(3).Row
  10.             sh.Range("b4:aj" & r).Sort key1:=sh.[aj4]
  11.         ElseIf sh.Name Like "*统计" Then         '英语统计,科学统计。。。。排序
  12.             r = sh.[a65536].End(3).Row
  13.             For i = 1 To r
  14.                 If sh.Cells(i, 1) = "序号" Then
  15.                     r1 = sh.Cells(i, 1).End(xlDown).Row
  16.                     sh.Range(sh.Cells(i + 1, 2), sh.Cells(r1, "H")).Sort key1:=sh.Cells(i + 1, "G")
  17.                 End If
  18.             Next
  19.         ElseIf sh.Name Like "*率" Then          '及格率、优秀率排序
  20.             r = sh.[a65536].End(3).Row
  21.             For i = 1 To 9 Step 2
  22.                 sh.Range(sh.Cells(3, i), sh.Cells(r, i + 1)).Sort key1:=sh.Cells(3, i + 1), order1:=xlDescending
  23.             Next
  24.         Else         '删除多余工作表
  25.             Application.DisplayAlerts = False
  26.             sh.Delete
  27.             Application.DisplayAlerts = True
  28.         End If
  29.     Next
  30.     wb.SaveAs thwb.Path & "\排序.xls"       '保存退出
  31.     wb.Close
  32. End Sub
复制代码
回复

使用道具 举报

发表于 2014-12-9 14:35 | 显示全部楼层    本楼为最佳答案   
请看附件。。。。。在源文件同目录下会生成“排序.xls”

排序导出.rar

49.58 KB, 下载次数: 28

评分

参与人数 2 +9 收起 理由
武林长风 + 6 很给力!
greview + 3 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-12-10 18:02 | 显示全部楼层
grf1973 发表于 2014-12-9 14:35
请看附件。。。。。在源文件同目录下会生成“排序.xls”

谢谢老朋友的大力帮助!!!
回复

使用道具 举报

 楼主| 发表于 2014-12-10 18:11 | 显示全部楼层
本帖最后由 武林长风 于 2014-12-12 07:29 编辑
grf1973 发表于 2014-12-9 14:35
请看附件。。。。。在源文件同目录下会生成“排序.xls”

前面有了计算的代码,合在一起出现有的没边框。

回复

使用道具 举报

 楼主| 发表于 2014-12-11 13:37 | 显示全部楼层
grf1973 发表于 2014-12-9 14:35
请看附件。。。。。在源文件同目录下会生成“排序.xls”

请您再修改一下代码。
回复

使用道具 举报

发表于 2014-12-11 15:08 | 显示全部楼层
我自己运行的结果没问题啊。各统计表正确结果的前提是两个:
1、班与班之间有空行隔开
2、本班之间所有记录连续无空行。
只要你原来的表格边框什么的都齐全,那么排序之后的也是齐全的。
附件是排序后的结果,没发现什么问题。

排序.rar

71.16 KB, 下载次数: 4

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 16:31 , Processed in 0.632224 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表