Excel精英培训网

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

[已解决]按某列数据拆分工作表的代码(求修改)

[复制链接]
发表于 2012-10-22 16:34 | 显示全部楼层 |阅读模式
复件 库存.zip (27.94 KB, 下载次数: 50)
发表于 2012-10-22 16:56 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2012-10-22 16:56 | 显示全部楼层
{:011:}亲们,帮忙看下啊!谢谢,我对代码就是个小白,以后学会了好好为大家哦
回复

使用道具 举报

 楼主| 发表于 2012-10-22 16:57 | 显示全部楼层
hwc2ycy 发表于 2012-10-22 16:56
小虎子,

{:221:}好美的女人啊,帮我解决下呗,亲!
回复

使用道具 举报

发表于 2012-10-22 17:29 | 显示全部楼层
元芳,你怎么看?
回复

使用道具 举报

发表于 2012-10-22 17:29 | 显示全部楼层
hwc2ycy 发表于 2012-10-22 17:29
元芳,你怎么看?

大神帮我看看这个http://www.excelpx.com/thread-288328-1-1.html
回复

使用道具 举报

发表于 2012-10-22 17:31 | 显示全部楼层
其实用数透就可以搞定,

不过你要分工作簿,工作表,应该还是行的,不急撒,晚上帮你写。
回复

使用道具 举报

发表于 2012-10-22 18:49 | 显示全部楼层
本帖最后由 hwc2ycy 于 2012-10-23 00:11 编辑
  1. Sub 分类工作簿()
  2.     Dim dic As Object
  3.     Dim i&, j&, iQY, k&
  4.     Dim arr
  5.     Dim arrTemp
  6.     Dim arrHead
  7.     Dim sPath$, sFilename$
  8.     '关闭屏幕刷新
  9.     Application.ScreenUpdating = False
  10.     '关闭警告信息和提示,对于保存文件来说,小心文件覆盖。
  11.     Application.SheetsInNewWorkbook = 1
  12.     Application.DisplayAlerts = False
  13.     Set dic = CreateObject("scripting.dictionary")
  14.     arrHead = Range(Cells(1, 1), Cells(1, Range("A1").End(xlToRight).Column))
  15.     sPath = ThisWorkbook.Path & Application.PathSeparator
  16.     '取工作表数据
  17.     arr = Range("a1").CurrentRegion
  18.     For i = 2 To UBound(arr)
  19.         iQY = arr(i, 1) '区域
  20.         If Not dic.exists(iQY) Then
  21.             ReDim arrTemp(1 To 3, 1 To 1)
  22.             For j = 1 To UBound(arrTemp)    '
  23.                 arrTemp(j, 1) = arr(i, j)
  24.             Next
  25.             dic.Add iQY, arrTemp
  26.         Else
  27.             arrTemp = dic(iQY)
  28.             k = UBound(arrTemp, 2) + 1
  29.             ReDim Preserve arrTemp(1 To 3, 1 To k)
  30.             For j = 1 To UBound(arrTemp)
  31.                 arrTemp(j, k) = arr(i, j)
  32.             Next
  33.             dic(iQY) = arrTemp
  34.             Erase arrTemp
  35.         End If
  36.     Next
  37.     'Erase arrTemp
  38.     For Each iQY In dic.keys
  39.         arrTemp = dic(iQY)
  40.         Workbooks.Add
  41.         Range("a1").Resize(, UBound(arrHead, 2)) = arrHead
  42.         Range("a2").Resize(UBound(arrTemp, 2), UBound(arrTemp)) = WorksheetFunction.Transpose(arrTemp)
  43.         Range("a1").CurrentRegion.Columns.AutoFit
  44.        ActiveSheet.Name = iQY
  45.         sFilename = sPath & iQY & ".xls"
  46.         ActiveWorkbook.SaveAs Filename:=sFilename, FileFormat:=xlExcel7
  47.         ActiveWorkbook.Close
  48.      Next
  49.      MsgBox "数据导出完成"
  50. End Sub
复制代码

点评

谢谢,代码挺好用,就是格式没有了。重新打开,设置 一遍都和复制一遍差不多了啊,亲,好漂亮的女人!  发表于 2012-10-23 09:47
亲,你的代码太复杂了,完全理解不了啊!看我附件里的代码啊,思路能明白么,就是复制整个工作表,再把不需要的行删除了,然后保存。然后在复制工作表,再删除,再保存。。。我运行过你的,格式变了啊,麻烦啊  发表于 2012-10-23 09:45
回复

使用道具 举报

发表于 2012-10-22 18:52 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hwc2ycy 于 2012-10-23 00:13 编辑

复件 库存.rar (19.92 KB, 下载次数: 372)
回复

使用道具 举报

发表于 2012-10-22 19:40 | 显示全部楼层
何须VBA?
添一辅助列,用数据透视表就可以完成了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 13:21 , Processed in 0.341840 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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