ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3741|回复: 14

[求助] 16个班能批量实现多个操作

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-5 10:44 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 yoshuya 于 2018-9-5 10:45 编辑

有年级总表和16个班的子表
要的效果
16个班能批量实现

1
按考号升序排列
2
添加班级一列(班号为工作表数)
3
删除最下方 “全班”一行


谢谢!!!!!!!!!

求批量处理.rar (37.35 KB, 下载次数: 27)


年级总表.jpg 数据.jpg 想要的效果.jpg

头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-9-5 11:26 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-9-5 13:06 | 显示全部楼层
  1. Sub tt()
  2. For Each sh In Sheets
  3.     If IsNumeric(sh.Name) Then
  4.         sh.Activate
  5.         [H1] = "banji"
  6.         n = Cells(Rows.Count, 1).End(3).Row - 1
  7.         Range(Cells(2, 8), Cells(n, 8)) = sh.Name
  8.         Cells(n + 1, 1).EntireRow.Delete
  9.         Rows(1).AutoFilter
  10.         sh.AutoFilter.Sort.SortFields.Clear
  11.         sh.AutoFilter.Sort.SortFields.Add Key:=Range("G1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
  12.         With sh.AutoFilter.Sort
  13.             .Header = xlYes
  14.             .MatchCase = False
  15.             .Orientation = xlTopToBottom
  16.             .SortMethod = xlPinYin
  17.             .Apply
  18.         End With
  19.         Rows(1).AutoFilter
  20.     End If
  21. Next
  22. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-5 14:09 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-5 14:22 | 显示全部楼层
朱荣兴 发表于 2018-9-5 11:26
直接拆分即可,多少个班级无所谓的,
Sub chaifen()
Application.ScreenUpdating = False

测试通过,谢谢
下方工作表顺序是乱的
如果下方工作表能按1-16排序就完美了。
777.jpg

各列的数据能这样排列吗?
666.jpg

谢谢

TA的精华主题

TA的得分主题

发表于 2018-9-5 14:37 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-5 14:41 | 显示全部楼层
liujialin0o0 发表于 2018-9-5 14:37
第2行前插入一行以下代码
dim n%,sh as worksheet

还是不行,不过还得谢谢你。

TA的精华主题

TA的得分主题

发表于 2018-9-5 14:53 | 显示全部楼层
  1. Sub test()
  2.   Dim r%, i%
  3.   Dim arr, brr
  4.   Dim d As Object
  5.   Application.ScreenUpdating = False
  6.   Application.DisplayAlerts = False
  7.   Set d = CreateObject("scripting.dictionary")
  8.   Set d1 = CreateObject("scripting.dictionary")
  9.   sx = [{"班级","考号","姓名","性别","语文","数学","英语","总分"}]
  10.   For k = 1 To UBound(sx)
  11.     d1(sx(k)) = k
  12.   Next
  13.   With Worksheets("全体名单")
  14.     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  15.     c = .Cells(1, .Columns.Count).End(xlToLeft).Column
  16.     arr = .Range("a1").Resize(r, c)
  17.     .Cells.Clear
  18.     For j = 1 To UBound(arr, 2)
  19.       If d1.exists(arr(1, j)) Then
  20.         n = d1(arr(1, j))
  21.         .Cells(1, n).Resize(UBound(arr), 1) = Application.Index(arr, 0, j)
  22.       End If
  23.     Next
  24.     .Range("a1").Resize(r, c).Sort key1:=.Range("b2"), order1:=xlAscending, Header:=xlYes
  25.     For i = 2 To UBound(arr)
  26.       If Not d.exists(arr(i, 1)) Then
  27.         Set d(arr(i, 1)) = .Range("a1:h1")
  28.       End If
  29.       Set d(arr(i, 1)) = Union(d(arr(i, 1)), .Cells(i, 1).Resize(1, 8))
  30.     Next
  31.   End With
  32.   brr = d.keys
  33.   For i = 0 To UBound(brr) - 1
  34.     p = i
  35.     For j = i + 1 To UBound(brr)
  36.       If Val(brr(p)) > Val(brr(j)) Then
  37.         p = j
  38.       End If
  39.     Next
  40.     If p <> i Then
  41.       temp = brr(i)
  42.       brr(i) = brr(p)
  43.       brr(p) = temp
  44.     End If
  45.   Next
  46.   For k = 0 To UBound(brr)
  47.     wjm = CStr(brr(k))
  48.     On Error Resume Next
  49.     Set ws = Worksheets(wjm)
  50.     If Err Then
  51.       Set ws = Worksheets.Add(after:=Worksheets(Worksheets.Count))
  52.       ws.Name = wjm
  53.     End If
  54.     On Error GoTo 0
  55.     With Worksheets(wjm)
  56.       .Cells.Clear
  57.       d(brr(k)).Copy .Range("a1")
  58.       r = .Cells(.Rows.Count, 1).End(xlUp).Row
  59.       .Range("a1").Resize(r, c).Borders.LineStyle = xlContinuous
  60.       With .UsedRange
  61.         .HorizontalAlignment = xlCenter
  62.         .VerticalAlignment = xlCenter
  63.       End With
  64.     End With
  65.   Next
  66. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-9-5 14:53 | 显示全部楼层
按朱版主思路写的,所有分表都是重新生成的,与班级数量没有关系。

求批量处理.rar

55.62 KB, 下载次数: 28

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-5 15:08 | 显示全部楼层
chxw68 发表于 2018-9-5 14:53
按朱版主思路写的,所有分表都是重新生成的,与班级数量没有关系。

完美解决,谢谢。
在哪送花,找了半天,没找到
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-13 15:54 , Processed in 0.027587 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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