Excel精英培训网

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

[已解决]自动生成若干明细表

[复制链接]
发表于 2014-10-22 23:46 | 显示全部楼层 |阅读模式
    大家晚上好!能否采用VBA的方式,使工作表中名为“明细分类账”按照B列科目名称,生成7个工作表,样式跟名为“应收工程款(广州汽车配件有限公司)一样,即是科目名称即为工作表名,一个科目名为一个明细表。(不知是否表达清楚了)
    工作表名为“目录”是用来链接各个明细表的,是否就是得一个一个的点击链接各个明细表?
       谢谢大家![em23][em23][em23]
最佳答案
2014-10-23 15:42
………………

2011年应收账款明细账.zip

34.55 KB, 下载次数: 32

发表于 2014-10-23 05:30 | 显示全部楼层
  1. Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  2. If Sh.Name <> "目录" And Target.Address = "$R$1" Then Sheet1.Activate
  3. End Sub
  4. Sub Macro1()
  5. On Error Resume Next
  6. Dim arr, d
  7. Application.ScreenUpdating = False
  8. Application.DisplayAlerts = False
  9. Set d = CreateObject("scripting.dictionary")
  10. arr = Sheets("明细分类账").Range("a1").CurrentRegion
  11. For i = Sheets.Count To 1 Step -1
  12.     If Sheets(i).Name <> "目录" And Sheets(i).Name <> "明细分类账" Then Sheets(i).Delete
  13. Next
  14. For i = 2 To UBound(arr)
  15.     If Not d.exists(arr(i, 2)) Then
  16.         s = s + 1: d(arr(i, 2)) = s & "、"
  17.     End If
  18. Next
  19. Range("a4").Resize(d.Count) = Application.Transpose(d.items)
  20. Range("b4").Resize(d.Count) = Application.Transpose(d.keys)
  21. a = d.keys
  22. For i = 0 To d.Count - 1
  23.     If Sheets(a(i)) Is Nothing Then
  24.         Sheets("明细分类账").[a1].AutoFilter Field:=2, Criteria1:=a(i)
  25.         With Sheets.Add(after:=Sheets(Sheets.Count))
  26.             .Name = a(i)
  27.             Sheets("明细分类账").[a:q].Copy .[a1]
  28.             .[r1] = "返回目录"
  29.             .Columns.AutoFit
  30.         End With
  31.     End If
  32. Next
  33. Sheets("明细分类账").ShowAllData
  34. Sheets("目录").Activate
  35. Application.DisplayAlerts = True
  36. Application.ScreenUpdating = True
  37. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
苗凱 + 1 向好人致敬!

查看全部评分

回复

使用道具 举报

发表于 2014-10-23 05:31 | 显示全部楼层
………………

2011年应收账款明细账.zip

25.16 KB, 下载次数: 45

回复

使用道具 举报

发表于 2014-10-23 08:17 | 显示全部楼层
dsmch 发表于 2014-10-23 05:31
………………

这是得有多早啊{:1212:}
回复

使用道具 举报

发表于 2014-10-23 08:40 | 显示全部楼层
  1. Sub 自动生成明细表()
  2.   Dim arr, arr1(1 To 10000, 1 To 17), arrx
  3.   Dim i, j, d, sh, intarr, l, k
  4.   Application.ScreenUpdating = False
  5.   Application.DisplayAlerts = False
  6.   On Error Resume Next
  7.   Set d = CreateObject("Scripting.dictionary")
  8.   For Each sh In Worksheets
  9.     If sh.Name <> "明细分类账" And sh.Name <> "目录" Then
  10.       sh.Delete
  11.     End If
  12.   Next
  13.   arr = Sheets("明细分类账").Range("B2:B" & Cells(Rows.Count, 2).End(3).Row)
  14.   arrx = Sheets("明细分类账").Range("A2:Q" & Cells(Rows.Count, 2).End(3).Row)
  15.   For i = 1 To UBound(arr)
  16.     d(arr(i, 1)) = ""
  17.   Next i
  18.   For j = 1 To d.Count
  19.     Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = Application.Index(d.keys, j)
  20.     Sheets("明细分类账").Range("A1:Q1").Copy Sheets(Application.Index(d.keys, j)).Range("A1")
  21.   Next j
  22.   For j = 1 To d.Count
  23.     For k = 1 To UBound(arr1)
  24.       If arrx(k, 2) = Application.Index(d.keys, j) Then
  25.         l = l + 1
  26.           For intarr = 1 To 17
  27.               arr1(l, intarr) = arrx(k, intarr)
  28.           Next intarr
  29.       End If
  30.     Next k
  31.   Sheets(Application.Index(d.keys, j)).Range("A2").Resize(l, 17) = arr1
  32.   Sheets(Application.Index(d.keys, j)).Range("A:A").EntireColumn.Hidden = True
  33.   l = 0
  34.   Next j
  35. Application.DisplayAlerts = True
  36. Application.ScreenUpdating = True
  37. End Sub
复制代码
我也写一个
回复

使用道具 举报

 楼主| 发表于 2014-10-23 09:34 | 显示全部楼层
dsmch 发表于 2014-10-23 05:31
………………

早上好!谢谢您直接帮我做的表!由于上传的只是明细分类账的一小部分,现在我将所有的数据共有两千多行复制到明细分类账中,再点目录的按钮1就没反应了,这是什么状况?

点评

用附件说明问题  发表于 2014-10-23 09:44
回复

使用道具 举报

发表于 2014-10-23 09:50 | 显示全部楼层
工作表最多只有256个,几千行生成那么多表,怎么看呀,有意义嘛?
回复

使用道具 举报

 楼主| 发表于 2014-10-23 10:00 | 显示全部楼层
zyouong 发表于 2014-10-23 09:50
工作表最多只有256个,几千行生成那么多表,怎么看呀,有意义嘛?

您好!两千多行需生成189个明细表,现在都是用软件系统做的,最近在做尽职调查,在资料中要求将公司的应收账款分类做成明细表,我就头都大了。我也觉得没什么用处,但这是资料中要求的,只能硬着头皮在这里看能否找到解决的方了。
回复

使用道具 举报

 楼主| 发表于 2014-10-23 10:08 | 显示全部楼层
wuyanshan 发表于 2014-10-23 09:34
早上好!谢谢您直接帮我做的表!由于上传的只是明细分类账的一小部分,现在我将所有的数据共有两千多行复 ...

请看附件,谢谢!

2011年应收账款明细账.zip

98.33 KB, 下载次数: 28

点评

代码运行正常  发表于 2014-10-23 10:59
回复

使用道具 举报

 楼主| 发表于 2014-10-23 12:06 | 显示全部楼层
wuyanshan 发表于 2014-10-23 10:08
请看附件,谢谢!

您好!可是点了扫钮没有反应哦。

点评

筛选方法较慢,耐心等待一会,下午有时间重新写一个。  发表于 2014-10-23 12:27
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 05:18 , Processed in 0.230470 second(s), 18 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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