ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: qiaoch

[求助] 请教各位老师,如何将工作簿中的多个工作表按关键字拆分成各自的工作簿

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-7-27 22:22 | 显示全部楼层
学电子表格 发表于 2022-7-27 20:28
把工作簿里格式完全一样(表头)的3张表合并,然后按照经理这个关键字拆分,我测试了哈 ,拆分用时3秒多一 ...

我也觉得这样子效率更高,代码更简单

TA的精华主题

TA的得分主题

发表于 2022-7-27 23:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
首先数据合并,你的表格已经算比较规范的了,你将工作簿全部合并再一张工作表上,然后再按照关键字拆分 。用到数组,字典这些。表格循环不行,数量大了,慢 。

TA的精华主题

TA的得分主题

发表于 2022-8-1 14:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
MARK一下,等会试试哪个快

TA的精华主题

TA的得分主题

发表于 2025-3-19 07:17 | 显示全部楼层
代码重写,原格式拆分,拆分速度有明显提升。

7月大类新模板---7.25 - 副本.zip

1.82 MB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2025-3-19 07:19 | 显示全部楼层
  1. Sub ykcbf2()   '//2025.3.19 多表拆分为多工作簿多表
  2.     Application.ScreenUpdating = False
  3.     Application.DisplayAlerts = False
  4.     Set d = CreateObject("Scripting.Dictionary")
  5.     Dim tm: tm = Timer
  6.     Set ws = ThisWorkbook
  7.     p = ThisWorkbook.Path & ""
  8.     On Error Resume Next
  9.     col = 2: bt = 2
  10.     For Each sht In ws.Sheets
  11.         arr = sht.UsedRange
  12.         For i = bt + 1 To UBound(arr)
  13.             If arr(i, col) <> Empty Then d(arr(i, col)) = ""
  14.         Next
  15.     Next
  16.     For Each k In d.keys
  17.         ws.Sheets.Copy
  18.         Set wb = ActiveWorkbook
  19.         For Each sht In wb.Sheets
  20.             With sht
  21.                 If .FilterMode = True Then .ShowAllData
  22.                 arr = .UsedRange
  23.                 .DrawingObjects.Delete
  24.                 .Rows(bt).AutoFilter Field:=col, Criteria1:="<>" & k
  25.                 .UsedRange.Offset(bt).Delete
  26.                 If .FilterMode = True Then .ShowAllData
  27.             End With
  28.         Next
  29.         wb.SaveAs p & k
  30.         wb.Close
  31.     Next
  32.     Application.ScreenUpdating = True
  33.     Application.DisplayAlerts = True
  34.     MsgBox "共用时:" & Format(Timer - tm, "0.000") & "秒!"
  35. End Sub


复制代码


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

本版积分规则

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

GMT+8, 2025-12-15 03:20 , Processed in 1.029552 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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