Excel精英培训网

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

[已解决]工作表拆成工作薄

[复制链接]
发表于 2013-5-22 21:49 | 显示全部楼层 |阅读模式
10学分
本帖最后由 rainbowsjh 于 2013-5-22 21:55 编辑

见附件。想按A列Region内容拆成四个工作薄,注意不是工作表,是独立的工作薄。每个工作薄中一个工作表,表名称为Region里的BJ HZ CQ SH; 表内容即为按A列四项筛选出来的内容。请教高手解决! 工作表拆分成工作薄.rar (29.27 KB, 下载次数: 8)

发表于 2013-5-23 06:42 | 显示全部楼层    本楼为最佳答案   
本帖最后由 ligh1298 于 2013-5-23 06:56 编辑

试着做了一个,不知是否符合要求?

工作表拆分成多工作薄.rar

43.45 KB, 下载次数: 34

回复

使用道具 举报

发表于 2013-5-23 08:52 | 显示全部楼层
使用 range.find 的方法来做的查找

使用时,运行 CC 就行了

  1. Sub cc()
  2. Dim Arr(), Brr(), Nm As String, Wb As Workbook, Rng As Range
  3. Dim Sa As Long, Ea As Long, X As Long, Hx As Long

  4.   With Sheets("Sheet1")   '指定 操作的表
  5.     Set Rng = .Range("A1:G1")   '提取标题行
  6.     X = .Range("A65536").End(xlUp).Row    '提A列取最后一个非空行位置
  7.     With .Range("A2:G" & X)   '指定操作数据源
  8.       Arr = .Value    '将值放到数组,后面会重新写回到单元格
  9.       .Sort .Cells(1, 1), 1   '排序
  10.       For Hx = 1 To UBound(Arr)   '在数组中循环
  11.         Nm = ThisWorkbook.Path & "" & Arr(Hx, 1) & ".xls"    '设置文件保存路径及 文件名称 .xls 是后面另存时设置的格式
  12.         If Len(Dir(Nm)) > 0 Then Kill Nm    '如果文件已经存在,则删除已存在的文件
  13.         Sa = Ro(Arr(Hx, 1), 1)    '提取 第一个数据位置
  14.         Ea = Ro(Arr(Hx, 1), 2)    '提取 最后一个数据位置
  15.         Brr = Range(Cells(Sa, "A"), Cells(Ea, "G")).Value   '将数据区域放到数组
  16.         Set Wb = Workbooks.Add(xlWBATWorksheet)   '新建一个 工作薄
  17.         Wb.SaveAs Nm, 56    '工作薄另存为 xls 格式
  18.         With Wb.Sheets(1)   '指定操作该工作薄的第一个工作表
  19.           .Range("A1:G1").Value = Rng.Value   '写入表头
  20.           .Range("A2").Resize(UBound(Brr), UBound(Brr, 2)).Value = Brr    '写入数据
  21.           .Range("B2").Resize(UBound(Brr), UBound(Brr, 2) - 2).Style = "Percent"    '设置 单元格格式 %
  22.         End With
  23.         Wb.Close True   '关闭文件并保存
  24.         Hx = Ea   '重置 hx 的值
  25.       Next Hx
  26.       .Value = Arr  '将数据写回单元格,对于用作排序后数据还原
  27.     End With
  28.   End With
  29.   MsgBox "数据拆分完毕!!"
  30. End Sub

  31. Private Function Ro(ByVal Zhi As String, Fx As Byte)  '根据参数查找 数据位置
  32.   Ro = Sheet1.Range("A:A").Find(Zhi, , , 1, , Fx).Row
  33. End Function
复制代码
回复

使用道具 举报

发表于 2013-5-23 08:55 | 显示全部楼层
在     .Range("B2").Resize(UBound(Brr), UBound(Brr, 2) - 2).Style = "Percent"    '设置 单元格格式 %
下面添加一句代码,用于修改 工作表名称
          .Name = Arr(Hx, 1)    '|修改 工作表的名称

回复

使用道具 举报

 楼主| 发表于 2013-5-23 09:14 | 显示全部楼层
ligh1298 发表于 2013-5-23 06:42
试着做了一个,不知是否符合要求?

老师你真强大啊!!!!!!!!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 11:35 , Processed in 0.439608 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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