Excel中如何将一个Excel工作表的数据按一列的关键字拆分成多个工作表
2016-11-30 16:10
525 查看
最近需要筛选Excel的数据 看到网上有大神做出来的Demo 但是在mac上需要Xactive环境 在windows上是可以运行的
VBA代码
Sub 如何将一个Excel工作表的数据拆分成多个工作表()
Dim Arr, Rng As Range, Sht As Worksheet, Dic As Object
Dim k, t, Str As String, i As Long, lc As Long
Application.ScreenUpdating = False '关闭屏幕更新
Arr = Range("A1").CurrentRegion.Value
lc = UBound(Arr, 2) '求取最后一列的列号
Set Rng = Rows(1) '标题行
Set Dic = CreateObject("Scripting.Dictionary") '创建字典
For i = 2 To UBound(Arr)
Str = Arr(i, 3) '订单号,关键字
If Not Dic.Exists(Str) Then '如果字典没有关键字
Set Dic(Str) = Cells(i, 1).Resize(, lc) '把当前行装入到字典中
Else '否则(字典中存在关键字)
Set Dic(Str) = Union(Dic(Str), Cells(i, 1).Resize(, lc)) '把行连合起来
End If
Next
k = Dic.Keys '字典关键字集合
t = Dic.Items '字典项目集合
On Error Resume Next
With Sheets
For i = 0 To Dic.Count - 1 '循环关键字的个数
Set Sht = .Item(k(i)) '给变量赋值(工作表名为关键字)
If Sht Is Nothing Then '该工作表不存在则插入一个空工作表
.Add(After:=.Item(.Count)).Name = k(i) '新建的工作表将置于所有工作表之后,并命名为关键字
Set Sht = ActiveSheet '活动工作表给变量
Else '否则
Sht.Cells.Clear '清除工作中所有内容和格式
End If
Rng.Copy Sht.Range("A1") '把标题写入第一行
t(i).Copy Sht.Range("A2") '写入其他内容
Sht.Cells.EntireColumn.AutoFit '自动调整全工作表单元格的列宽
Set Sht = Nothing '变量处于初始状态
Next
End With
Sheets(1).Activate '第1个工作表处于激活状态
Application.ScreenUpdating = True '打开屏幕更新
End Sub
其中需要改动的就是第一列就是1 第二列就是2 以此类推
参考文档
http://blog.sina.com.cn/s/blog_43f0c1290101rdyc.html
VBA代码
Sub 如何将一个Excel工作表的数据拆分成多个工作表()
Dim Arr, Rng As Range, Sht As Worksheet, Dic As Object
Dim k, t, Str As String, i As Long, lc As Long
Application.ScreenUpdating = False '关闭屏幕更新
Arr = Range("A1").CurrentRegion.Value
lc = UBound(Arr, 2) '求取最后一列的列号
Set Rng = Rows(1) '标题行
Set Dic = CreateObject("Scripting.Dictionary") '创建字典
For i = 2 To UBound(Arr)
Str = Arr(i, 3) '订单号,关键字
If Not Dic.Exists(Str) Then '如果字典没有关键字
Set Dic(Str) = Cells(i, 1).Resize(, lc) '把当前行装入到字典中
Else '否则(字典中存在关键字)
Set Dic(Str) = Union(Dic(Str), Cells(i, 1).Resize(, lc)) '把行连合起来
End If
Next
k = Dic.Keys '字典关键字集合
t = Dic.Items '字典项目集合
On Error Resume Next
With Sheets
For i = 0 To Dic.Count - 1 '循环关键字的个数
Set Sht = .Item(k(i)) '给变量赋值(工作表名为关键字)
If Sht Is Nothing Then '该工作表不存在则插入一个空工作表
.Add(After:=.Item(.Count)).Name = k(i) '新建的工作表将置于所有工作表之后,并命名为关键字
Set Sht = ActiveSheet '活动工作表给变量
Else '否则
Sht.Cells.Clear '清除工作中所有内容和格式
End If
Rng.Copy Sht.Range("A1") '把标题写入第一行
t(i).Copy Sht.Range("A2") '写入其他内容
Sht.Cells.EntireColumn.AutoFit '自动调整全工作表单元格的列宽
Set Sht = Nothing '变量处于初始状态
Next
End With
Sheets(1).Activate '第1个工作表处于激活状态
Application.ScreenUpdating = True '打开屏幕更新
End Sub
其中需要改动的就是第一列就是1 第二列就是2 以此类推
Str = Arr(i, 3) '订单号,关键字
参考文档
http://blog.sina.com.cn/s/blog_43f0c1290101rdyc.html
相关文章推荐
- excel将一个工作表根据条件拆分成多个工作表图文教程
- C#将一个excel工作表根据指定范围拆分为多个excel文件
- C#将一个excel工作表根据指定范围拆分为多个excel文件
- [VB.NET]请问如何将从数据库提出来的一列数据存入一个数组中?
- 在EXCEL中如何将一列中的相同值的数据行找出来?
- 如何在Excel的一列中查找重复的数据
- SQLSqlserver中如何将一列数据,不重复的拼接成一个字符串
- 如何对EXCEL一列的数据中快速提取不重复的记录
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何把处理好后的数据导出Excel文件中(含背景\字体颜色设置)
- excel 表格成批删除公式只保留数值(包括一个文档中有多个工作表的情况)
- 如何将EXCEL的多列数据叠加合并到一列
- 如何将多个excel中的数据导入一个excel中?多个EXCEL中格式一致
- excel多单元格组合成数组 将Excel多个单元格数据放在一个内存数组
- SQL server中将一个表中一列数据更新到另一个表中,该如何解决
- 如何把同一个表的一列数据复制到另一列去?
- excel一列数据拆分为两列
- 如何将SQL Server数据表中的数据按条件批量导出为多个Excel文件
- 如何将多个excel中的数据导入一个excel中?多个EXCEL中格式一致
- 如何将多个excel中的数据导入一个excel中?多个EXCEL中格式一致
- 如何将数据合并到一列或者一个单元…