Excel精英培训网

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

[已解决]代码修改需求烦请大侠帮忙急用

[复制链接]
发表于 2015-10-27 11:18 | 显示全部楼层 |阅读模式
拆分表中BCD及目录都好了还差个A表
总是搞不定,有哪位大侠帮忙修改下代码
以便可以用
在线等谢谢了



Sub test()
  Dim r%, i%
  Dim arr, brr
  Dim wb As Workbook
  Dim ws As Worksheet
  Dim d As Object
  Dim d1 As Object
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  Application.SheetsInNewWorkbook = 5
  Set d = CreateObject("scripting.dictionary")
  Set d1 = CreateObject("scripting.dictionary")
  d1("B") = Array("b3:l5", 11, 6)
  d1("C") = Array("B2:r5", 17, 6)
  d1("D") = Array("B2:z4", 25, 5)
  For Each ws In Worksheets
    flg = Left(ws.Name, 1)
    If flg Like "[B-D]" Then
      brr = d1(flg)
      With ws
        r = .Cells(.Rows.Count, 2).End(xlUp).Row
        arr = .Range("b1:b" & r)
        For i = brr(2) To UBound(arr)
          If Not d.exists(arr(i, 1)) Then
            Set d(arr(i, 1)) = CreateObject("scripting.dictionary")
          End If
          If Not d(arr(i, 1)).exists(ws.Name) Then
            Set d(arr(i, 1))(ws.Name) = .Range(brr(0))
          End If
          Set d(arr(i, 1))(ws.Name) = Union(d(arr(i, 1))(ws.Name), .Cells(i, 2).Resize(1, brr(1)))
        Next
      End With
    End If
  Next
  For Each aa In d.keys
    Set wb = Workbooks.Add
    With wb
      ThisWorkbook.Worksheets("目录及报表说明").UsedRange.Copy .Worksheets(1).Range("c2")
      Worksheets(1).Name = "目录及报表说明"
      m = 2
      For Each bb In d(aa).keys
        With Worksheets(m)
          .Name = bb
          d(aa)(bb).Copy .Range("b3")
        End With
        m = m + 1
      Next
      .SaveAs Filename:=ThisWorkbook.Path & "\" & "财务数据_" & aa & ".xls"
      .Close False
    End With
  Next
End Sub


最佳答案
2015-10-27 13:26
请看附件。

拆分表需求222 (1).rar

31.71 KB, 下载次数: 2

发表于 2015-10-27 13:25 | 显示全部楼层
  1. Sub tt()
  2.     Dim Sh As Worksheet, DelRng As Range
  3.     Set d = CreateObject("scripting.dictionary")
  4.     arr = Sheet3.Range(Sheet3.[b6], Sheet3.[b6].End(xlDown))
  5.     For i = 1 To UBound(arr)
  6.         d(arr(i, 1)) = 1
  7.     Next
  8.     For i = 1 To UBound(arr)
  9.         x = arr(i, 1)
  10.          Sheets(Array("目录及报表说明", "A、2015年1-8月分行损益明细表", "B、2015年1-8月分行收入结构表", _
  11.         "C、2015年1-8月分行变动费用明细表", "D、2015年1-8月支行收入结构及损益明细表")).Copy
  12.         With ActiveSheet
  13.             For Each Sh In ActiveWorkbook.Worksheets
  14.                 r = Sh.[b65536].End(3).Row
  15.                 brr = Sh.Range("b1:b" & r)
  16.                 Set DelRng = Sh.Rows(65536)
  17.                 For k = 1 To UBound(brr)
  18.                     If d(brr(k, 1)) = 1 And brr(k, 1) <> x Then Set DelRng = Union(DelRng, Sh.Rows(k))
  19.                 Next
  20.                 DelRng.Delete
  21.                 Set DelRng = Nothing
  22.             Next
  23.             ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "" & "财务数据_" & x & ".xls"
  24.             ActiveWorkbook.Close
  25.         End With
  26.     Next
  27. End Sub
复制代码
回复

使用道具 举报

发表于 2015-10-27 13:26 | 显示全部楼层    本楼为最佳答案   
请看附件。

拆分表需求222.rar

28.52 KB, 下载次数: 8

回复

使用道具 举报

 楼主| 发表于 2015-10-27 14:48 | 显示全部楼层
grf1973 发表于 2015-10-27 13:26
请看附件。

真是太感谢了,解决我大问题了
回复

使用道具 举报

 楼主| 发表于 2015-10-29 17:12 | 显示全部楼层
grf1973 发表于 2015-10-27 13:26
请看附件。

大侠你看这个需求,在需求表里面输入姓名,相关关联的信息都自动出来
这个应该怎么做呀

需求.rar

497.36 KB, 下载次数: 2

回复

使用道具 举报

发表于 2015-10-30 10:09 | 显示全部楼层
请看附件。户主姓名不唯一无法处理,比如“洪吉川”。

需求.rar

520.18 KB, 下载次数: 1

回复

使用道具 举报

发表于 2015-10-30 10:14 | 显示全部楼层
此件为准。

需求.rar

520.17 KB, 下载次数: 7

回复

使用道具 举报

 楼主| 发表于 2015-10-30 21:44 | 显示全部楼层
grf1973 发表于 2015-10-30 10:14
此件为准。

真是太感谢大侠了,十分感激
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 22:25 , Processed in 0.455885 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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