Excel精英培训网

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

[已解决]如何批量生成多个表格?

[复制链接]
发表于 2014-11-19 12:37 | 显示全部楼层 |阅读模式
有个表格,有900列,现在需要每三列的数据提出,形成一个新的表格,保存为CSV格式的。也就是最后生成300个CSV格式的文件。
例子中是9列的表格,现在希望能生成三个表格,分别是文件名一班,二班,三班。CSV格式。
新人,请高手指点。多谢!

之前没有附件重发。
最佳答案
2014-11-19 14:30
  1. Sub demo()
  2.     Dim irow As Long, icol As Long, ar, str As String, i As Long, mybook As Workbook
  3.     Application.ScreenUpdating = False
  4.     irow = Sheet1.Cells(Rows.Count, 1).End(3).Row
  5.     icol = Sheet1.Cells(2, Columns.Count).End(1).Column
  6.     For i = 1 To icol Step 3
  7.         ar = Range(Cells(1, i), Cells(irow, i + 2))
  8.         str = Cells(1, i)
  9.         Set mybook = Workbooks.Add
  10.         With mybook
  11.             ActiveSheet.Range("a1").Resize(UBound(ar), 3) = ar
  12.             .SaveAs Filename:=ThisWorkbook.Path & "" & str, FileFormat:=xlCSV
  13.             .Close (False)
  14.         End With
  15.     Next
  16.     Application.ScreenUpdating = False
  17. End Sub
复制代码
附件楼下

批量生成表格求助.rar

6.11 KB, 下载次数: 66

例子

发表于 2014-11-19 14:30 | 显示全部楼层    本楼为最佳答案   
  1. Sub demo()
  2.     Dim irow As Long, icol As Long, ar, str As String, i As Long, mybook As Workbook
  3.     Application.ScreenUpdating = False
  4.     irow = Sheet1.Cells(Rows.Count, 1).End(3).Row
  5.     icol = Sheet1.Cells(2, Columns.Count).End(1).Column
  6.     For i = 1 To icol Step 3
  7.         ar = Range(Cells(1, i), Cells(irow, i + 2))
  8.         str = Cells(1, i)
  9.         Set mybook = Workbooks.Add
  10.         With mybook
  11.             ActiveSheet.Range("a1").Resize(UBound(ar), 3) = ar
  12.             .SaveAs Filename:=ThisWorkbook.Path & "" & str, FileFormat:=xlCSV
  13.             .Close (False)
  14.         End With
  15.     Next
  16.     Application.ScreenUpdating = False
  17. End Sub
复制代码
附件楼下

评分

参与人数 1 +6 收起 理由
Excel学徒123 + 6 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-11-19 14:30 | 显示全部楼层
新建文件夹.rar (14.93 KB, 下载次数: 150)
回复

使用道具 举报

 楼主| 发表于 2014-11-19 16:28 | 显示全部楼层
qh8600 发表于 2014-11-19 14:30
楼主试试

感激不尽!没有学过VB,不过回答得很棒,还是看懂了。我自己用到实际例子试试。
回复

使用道具 举报

 楼主| 发表于 2014-11-20 23:15 | 显示全部楼层
qh8600 发表于 2014-11-19 14:30
楼主试试

你好,新的问题是我的数据每列的长度不同,不像我例子里举得那样,每列的长度都是相同的,这有什么办法解决吗?
不过通过数最大行数再输入到程序里是可以解决,但是感觉不够好。

第二个问题有点奇怪,我描述下,可以的话请帮忙看看是不是常见的问题:
我拿我的数据跑了一下,共有2751列,结果只生产了14个文件。
我把icol改成2751后,可以解决;或者删除掉一半左右的数据(1308列),也能跑出来。但是原来数据的第2行,是直到2751列都有数据的。


如果可以的话,烦请看一下。多谢!
回复

使用道具 举报

 楼主| 发表于 2014-11-20 23:19 | 显示全部楼层
qh8600 发表于 2014-11-19 14:30
楼主试试

抱歉!可以忽略第二个问题了
回复

使用道具 举报

发表于 2016-12-5 15:25 | 显示全部楼层
dd
回复

使用道具 举报

发表于 2016-12-6 13:57 | 显示全部楼层
学习了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 08:47 , Processed in 0.437154 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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