Excel精英培训网

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

[已解决]编辑拆分工作表拆分vba

[复制链接]
发表于 2014-2-23 15:28 | 显示全部楼层 |阅读模式
5学分
编辑拆分工作表拆分vba, 希望将拆分前的工作表拆分后变成拆分后的工作表。望各位大神帮忙
最佳答案
2014-2-23 19:27
本帖最后由 独奏 于 2014-2-23 19:33 编辑
  1. Sub test()
  2. Dim arr, brr(), d, i, n, x, y, z
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Sheet1.Range("a3:o" & Range("a65536").End(xlUp).Row)
  5. ar = Sheet1.Range("a3:j4")
  6. For i = 4 To UBound(arr)
  7.     If Not d.exists(arr(i, 3)) Then
  8.         d(arr(i, 3)) = ""
  9.         For n = 4 To UBound(arr)
  10.             If arr(n, 3) = arr(i, 3) Then
  11.                 x = x + 1
  12.                 y = Range("a4:o4").Find(arr(i, 3)).Column
  13.                 ReDim Preserve brr(1 To 11, 1 To x)
  14.                 For z = 1 To 10
  15.                     brr(z, x) = arr(n, z)
  16.                 Next
  17.                 If x > 1 Then
  18.                     brr(11, x) = brr(11, x - 1) + arr(n, 4) + arr(n, 5) + arr(n, 6) + arr(n, 7) + arr(n, 8) + arr(n, 9)
  19.                 Else
  20.                     brr(11, 1) = arr(3, y)
  21.                     brr(11, x) = brr(11, x) + arr(n, 4) + arr(n, 5) + arr(n, 6) + arr(n, 7) + arr(n, 8) + arr(n, 9)
  22.                 End If
  23.             End If
  24.         Next
  25.         Set ws = Worksheets.Add(after:=Sheets(Sheets.Count))
  26.         With ws
  27.             .Name = arr(i, 3)
  28.             .Range("a1").Resize(2, UBound(ar, 2)) = ar
  29.             .Range("a3").Resize(UBound(brr, 2), 11) = Application.Transpose(brr)
  30.             .Range("a:a").NumberFormatLocal = "yyyy-m-d"
  31.         End With
  32.         Erase brr
  33.         x = 0
  34.     End If
  35. Next
  36. End Sub
复制代码

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2014-2-23 15:32 | 显示全部楼层
编辑拆分工作表拆分vba, 希望将拆分前的工作表拆分后变成拆分后的工作表,请看附件。望各位大神帮忙

工作表拆分.zip

25.79 KB, 下载次数: 22

回复

使用道具 举报

发表于 2014-2-23 15:39 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-2-23 16:46 | 显示全部楼层
怎么了
回复

使用道具 举报

 楼主| 发表于 2014-2-23 16:48 | 显示全部楼层
就是将总表拆分 按某一列的内容进行拆分呀
回复

使用道具 举报

发表于 2014-2-23 19:27 | 显示全部楼层    本楼为最佳答案   
本帖最后由 独奏 于 2014-2-23 19:33 编辑
  1. Sub test()
  2. Dim arr, brr(), d, i, n, x, y, z
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Sheet1.Range("a3:o" & Range("a65536").End(xlUp).Row)
  5. ar = Sheet1.Range("a3:j4")
  6. For i = 4 To UBound(arr)
  7.     If Not d.exists(arr(i, 3)) Then
  8.         d(arr(i, 3)) = ""
  9.         For n = 4 To UBound(arr)
  10.             If arr(n, 3) = arr(i, 3) Then
  11.                 x = x + 1
  12.                 y = Range("a4:o4").Find(arr(i, 3)).Column
  13.                 ReDim Preserve brr(1 To 11, 1 To x)
  14.                 For z = 1 To 10
  15.                     brr(z, x) = arr(n, z)
  16.                 Next
  17.                 If x > 1 Then
  18.                     brr(11, x) = brr(11, x - 1) + arr(n, 4) + arr(n, 5) + arr(n, 6) + arr(n, 7) + arr(n, 8) + arr(n, 9)
  19.                 Else
  20.                     brr(11, 1) = arr(3, y)
  21.                     brr(11, x) = brr(11, x) + arr(n, 4) + arr(n, 5) + arr(n, 6) + arr(n, 7) + arr(n, 8) + arr(n, 9)
  22.                 End If
  23.             End If
  24.         Next
  25.         Set ws = Worksheets.Add(after:=Sheets(Sheets.Count))
  26.         With ws
  27.             .Name = arr(i, 3)
  28.             .Range("a1").Resize(2, UBound(ar, 2)) = ar
  29.             .Range("a3").Resize(UBound(brr, 2), 11) = Application.Transpose(brr)
  30.             .Range("a:a").NumberFormatLocal = "yyyy-m-d"
  31.         End With
  32.         Erase brr
  33.         x = 0
  34.     End If
  35. Next
  36. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-2-24 10:36 | 显示全部楼层
您提供的vba代码在运行时提示:“运行时错误’91‘ 对象变量或with块变量未设置”;请大师再完善;谢谢
回复

使用道具 举报

发表于 2014-2-24 10:40 | 显示全部楼层
没有啊,。大师的代码,运行正确啊。

未拆分前.rar

12.62 KB, 下载次数: 15

回复

使用道具 举报

 楼主| 发表于 2014-2-24 11:40 | 显示全部楼层
谢谢大师,已经相当不错了,但是和我想要的还不太一样,望大师帮我完善;我想要的见附件;谢谢

希望工作表拆分后.zip

15.49 KB, 下载次数: 8

请把拆分后的工表把期初数据添加上,并把合计添加上

回复

使用道具 举报

 楼主| 发表于 2014-2-24 15:41 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 06:37 , Processed in 0.449880 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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