吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1335|回复: 7
收起左侧

[其他原创] 表格 根据某列 拆分成不同表格 VB代码

[复制链接]
9BT 发表于 2023-7-22 19:40
工作中需要将表格按某一列拆分成不同独立的表格,发给不同的人。苦苦寻找,找到了这串代码,小白拿去用吧。
1、将表格放到一个单独的文件夹中,因为拆分出的不同表格会默认放到这个文件夹。如果这个文件放在桌面,一下桌面就满了。
2、打开表格,点击开发工具,VB编辑器。
3、复制这串代码,然后点运行。
4、等一会,就会在文件夹下生成多个表格了,亲测可用。

Sub 保留表头拆分数据为若干新工作簿()
Dim arr, d As Object, k, t, i&, lc%, rng As Range, c%
c = Application.InputBox("请输入拆分列号", , 4, , , , , 1)
If c = 0 Then Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
arr = [a1].CurrentRegion
lc = UBound(arr, 2)
Set rng = [a1].Resize(, lc)
Set d = CreateObject("scripting.dictionary")
For i = 2 To UBound(arr)
If Not d.Exists(arr(i, c)) Then
Set d(arr(i, c)) = Cells(i, 1).Resize(1, lc)
Else
Set d(arr(i, c)) = Union(d(arr(i, c)), Cells(i, 1).Resize(1, lc))
End If
Next
k = d.Keys
t = d.Items
For i = 0 To d.Count - 1
With Workbooks.Add(xlWBATWorksheet)
rng.Copy .Sheets(1).[a1]
t(i).Copy .Sheets(1).[a2]
.SaveAs Filename:=ThisWorkbook.Path & "\" & k(i) & ".xls"
.Close
End With
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "完毕"
End Sub

免费评分

参与人数 2吾爱币 +5 热心值 +2 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
lmos1000 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yimting 发表于 2023-7-27 18:40
学习到了,感谢!
kingc138 发表于 2023-7-22 23:42
 楼主| 9BT 发表于 2023-9-28 15:37
kingc138 发表于 2023-7-22 23:42
所以,这个具体怎么用呢?

其实已经很具体了,可能你还未遇到这个问题。等遇到的时候就看明白了。
shuaibingg521 发表于 2023-12-16 15:33
lz 我有几百个数据 想平均拆成12个表  请问怎么设置
oclassic 发表于 2024-1-4 22:39
shuaibingg521 发表于 2023-12-16 15:33
lz 我有几百个数据 想平均拆成12个表  请问怎么设置

vba即可。
 楼主| 9BT 发表于 2024-2-29 18:36
shuaibingg521 发表于 2023-12-16 15:33
lz 我有几百个数据 想平均拆成12个表  请问怎么设置

想按哪一列分成12个表,确定好了就用这个代码即可。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 20:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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