ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助大神宏解决问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-5-28 17:35 | 显示全部楼层 |阅读模式
求助:       
将表1中按C列部门编码按以下规则进行对应,部门取前4位,对应下面规则,然后按部门规则复制粘贴出来生成新的SHEET表,名称用对应出来的名称命名。       
       
后面三个A部门,B部门,C部门的SHEET表是用复制粘贴出来的结果,效率太慢,求助宏的方法       


工作簿1.rar

11.78 KB, 下载次数: 8

头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2017-5-28 17:58 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-5-28 18:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
透视表啊.......

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-28 21:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

透视表那个还不如先用个VLOOKUP,然后筛选粘贴,透视表也解决不了根据部门编码归类部门大类的问题。

TA的精华主题

TA的得分主题

发表于 2017-5-28 21:44 | 显示全部楼层
liuqiang_75 发表于 2017-5-28 21:23
透视表那个还不如先用个VLOOKUP,然后筛选粘贴,透视表也解决不了根据部门编码归类部门大类的问题。

加个辅助列来放部门编码前四位就行了

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-28 21:49 | 显示全部楼层
qingc0221 发表于 2017-5-28 21:44
加个辅助列来放部门编码前四位就行了

透视表也只限在一个工作簿里增加SHEET表,而VBA可以新建工作簿。优势挺多。
而且这个表并没有改变列的顺序,感觉用透视表并不方便

TA的精华主题

TA的得分主题

发表于 2017-5-28 23:07 | 显示全部楼层
代码放“表1”工作表代码区,按钮用activex按钮
  1. Private Sub CommandButton1_Click()
  2.     tim1 = Timer
  3.     Application.DisplayAlerts = False
  4.     For Each sht In Sheets
  5.         If sht.Name <> "表1" Then sht.Delete
  6.     Next
  7.     Application.DisplayAlerts = True
  8.     Set d = CreateObject("scripting.dictionary")
  9.     arr = [a1].CurrentRegion
  10.     For i = 1 To UBound(arr)
  11.         For j = 1 To UBound(arr, 2)
  12.             s = Left(arr(i, 3), 1)
  13.             If Not d.exists(s) Then
  14.                  Set d(s) = Range("a" & i).Resize(1, j)
  15.             Else
  16.                  Set d(s) = Union(d(s), Range("a" & i).Resize(1, j))
  17.             End If
  18.         Next
  19.     Next
  20.     x = d.keys
  21.     For k = 1 To UBound(x)
  22.         Set sht = ActiveWorkbook.Sheets.Add(, after:=ActiveSheet)
  23.         sht.Name = x(k) & "部门"
  24.         d.items()(k).Copy sht.[a2]
  25.         Rows("1").Copy sht.[a1]
  26.     Next
  27.     tim2 = Timer
  28.     MsgBox Format(tim2 - tim1, "拆分完成,共耗时:0.00秒"), 64, "时间统计"
  29. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-29 18:19 | 显示全部楼层
lsc900707 发表于 2017-5-28 23:07
代码放“表1”工作表代码区,按钮用activex按钮

多谢,经测算,OK!多谢
嘿嘿,只是完全看不懂,想复制到其他的表格做差不多类似的,完全不知道怎么改些内容。哪怕是换一列都不知道从哪修改。

TA的精华主题

TA的得分主题

发表于 2017-5-30 05:38 来自手机 | 显示全部楼层
本帖最后由 lsc900707 于 2017-5-30 05:53 编辑

代码只能根据数据来写的。自己不会改,那就发真实一点的附件上来。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-6-1 16:22 | 显示全部楼层
lsc900707 发表于 2017-5-30 05:38
代码只能根据数据来写的。自己不会改,那就发真实一点的附件上来。

多谢了。。再帮着弄一个哈

工作簿1.rar

91.38 KB, 下载次数: 2

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

本版积分规则

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

GMT+8, 2024-4-27 04:19 , Processed in 0.043965 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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