Excel精英培训网

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

[已解决]有关工作表移动的问题

[复制链接]
发表于 2016-6-19 18:01 | 显示全部楼层 |阅读模式
各位大神我想把EXCEL中的工作表的名字提取第9个和第10个字符,只要提取出来的是相同数字,那么就取定这些工作表,然后移到到一个新的工作簿中去。比如“117004JC11013”和“117004JC11012”这两个工作表第9个和第10个字符都是“11”那么就同时被选取,然到移到到另一个工作簿中。然后再选定下一组。求代码!!!


备注:我的工作簿里有很多个工作表
最佳答案
2016-6-19 22:01
执行代码后会在当前工作簿所在的路径下生产相应的工作簿:
  1. Sub xx()
  2.     Dim d, arr, i&, j&, s$, wb As Workbook
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     For i = 1 To ThisWorkbook.Sheets.Count
  5.         s = Mid(Sheets(i).Name, 9, 2)
  6.         If s <> "" Then
  7.             If d.Exists(s) Then
  8.                 d(s) = d(s) & ";" & Sheets(i).Name
  9.             Else
  10.                 d.Add s, Sheets(i).Name
  11.             End If
  12.         End If
  13.     Next
  14.     Application.ScreenUpdating = False
  15.     For Each k In d.Keys
  16.         If InStr(d(k), ";") > 0 Then
  17.             arr = Split(d(k), ";")
  18.             Set wb = Workbooks.Add
  19.             For i = 0 To UBound(arr)
  20.                 ThisWorkbook.Sheets(arr(i)).Copy wb.Sheets(i + 1)
  21.             Next
  22.             wb.SaveAs ThisWorkbook.Path & "" & k & ".xlsx"
  23.             wb.Close
  24.         End If
  25.     Next
  26.     Application.ScreenUpdating = True
  27. End Sub
复制代码

新建 Microsoft Excel 工作表 (2).rar

42.68 KB, 下载次数: 12

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-6-19 22:01 | 显示全部楼层    本楼为最佳答案   
执行代码后会在当前工作簿所在的路径下生产相应的工作簿:
  1. Sub xx()
  2.     Dim d, arr, i&, j&, s$, wb As Workbook
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     For i = 1 To ThisWorkbook.Sheets.Count
  5.         s = Mid(Sheets(i).Name, 9, 2)
  6.         If s <> "" Then
  7.             If d.Exists(s) Then
  8.                 d(s) = d(s) & ";" & Sheets(i).Name
  9.             Else
  10.                 d.Add s, Sheets(i).Name
  11.             End If
  12.         End If
  13.     Next
  14.     Application.ScreenUpdating = False
  15.     For Each k In d.Keys
  16.         If InStr(d(k), ";") > 0 Then
  17.             arr = Split(d(k), ";")
  18.             Set wb = Workbooks.Add
  19.             For i = 0 To UBound(arr)
  20.                 ThisWorkbook.Sheets(arr(i)).Copy wb.Sheets(i + 1)
  21.             Next
  22.             wb.SaveAs ThisWorkbook.Path & "" & k & ".xlsx"
  23.             wb.Close
  24.         End If
  25.     Next
  26.     Application.ScreenUpdating = True
  27. End Sub
复制代码

新建 Microsoft Excel 工作表 (2).rar

43.4 KB, 下载次数: 4

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 08:25 , Processed in 0.310632 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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