ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 381|回复: 9

[求助] 文件夹内多个文档合并拆分问题。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-4-13 00:32 | 显示全部楼层 |阅读模式
2个问题:
1、文件夹内多个文档合并到1个文档中。格式如附图,示例数据文件名在第一行,标黄色,然后第二行开始是第一个示例数据内容;然后是第二个文件名,第二个示例数据内容,以此类推。直至所有文件合并结束。
2、生成的汇总表逆向导出多个文件,并以标黄色内容为文件名,文件内容是汇总表中对应文件名下方内容,相当于就是第一个合并的逆向拆分。


应该是2段代码。
新手菜鸟,请各位大佬协助。感激不尽!!!
附件压缩包为三个示例数据文件和一个汇总文件示例,供参考!
采购清单3.png
采购清单2.png
采购清单1.png
汇总.png

源数据表格.rar

47.44 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2023-4-13 09:50 | 显示全部楼层
  1. Sub test1() '汇总
  2.     Dim r%, i%
  3.     Dim arr, brr
  4.     Dim wb As Workbook
  5.     Dim ws As Worksheet
  6.     Dim mypath$, myname$
  7.     mypath = ThisWorkbook.Path & ""
  8.     myname = Dir(mypath & "*.xls")
  9.     Application.ScreenUpdating = False
  10.     Application.DisplayAlerts = False
  11.     With ThisWorkbook.Worksheets("sheet1")
  12.         .Cells.Clear
  13.     End With
  14.     m = 1
  15.     Do While myname <> ""
  16.         If myname <> ThisWorkbook.Name Then
  17.             Set wb = GetObject(mypath & myname)
  18.             With wb
  19.                 With .Worksheets(1)
  20.                     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  21.                     c = .Cells(1, .Columns.Count).End(xlToLeft).Column
  22.                     ThisWorkbook.Worksheets("sheet1").Cells(m, 1) = Split(myname, ".")(0)
  23.                     .Range("a1").Resize(r, c).Copy ThisWorkbook.Worksheets("sheet1").Cells(m + 1, 1)
  24.                     m = m + 1 + r
  25.                 End With
  26.                 .Close False
  27.             End With
  28.         End If
  29.         myname = Dir
  30.     Loop
  31. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2023-4-13 09:56 | 显示全部楼层
  1. Sub test2() '拆分
  2.     Dim r%, i%, m%
  3.     Dim arr, brr, zrr()
  4.     Dim wb As Workbook
  5.     Dim ws As Worksheet
  6.     Application.ScreenUpdating = False
  7.     Application.DisplayAlerts = False
  8.     Application.SheetsInNewWorkbook = 1
  9.     With ThisWorkbook.Worksheets("sheet1")
  10.         r = .UsedRange.Find(what:="*", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious).Row
  11.         c = .UsedRange.Find(what:="*", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByColumns, searchdirection:=xlPrevious).Column
  12.         If r = 1 Then
  13.             Exit Sub
  14.         End If
  15.         arr = .Range("a1").Resize(r, c)
  16.         m = 0
  17.         For i = 1 To UBound(arr)
  18.             If Len(arr(i, 2)) = 0 Then
  19.                 m = m + 1
  20.                 ReDim Preserve zrr(1 To m)
  21.                 zrr(m) = Array(i, i)
  22.             Else
  23.                 If m > 0 Then
  24.                     zrr(m)(1) = i
  25.                 End If
  26.             End If
  27.         Next
  28.         For k = 1 To UBound(zrr)
  29.             Set wb = Workbooks.Add
  30.             With wb
  31.                 With .Worksheets(1)
  32.                     ThisWorkbook.Worksheets("sheet1").Cells(zrr(k)(0), 1).Resize(zrr(k)(1) - zrr(k)(0) + 1, c).Copy .Range("a1")
  33.                 End With
  34.                 .SaveAs Filename:=ThisWorkbook.Path & "" & arr(zrr(k)(0), 1)
  35.                 .Close False
  36.             End With
  37.         Next
  38.     End With
  39. End Sub

复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-4-13 09:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
详见附件。

源数据表格.rar

41.24 KB, 下载次数: 7

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-13 12:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
image.png 汇总思路是对的。 但内容不全。   拆分提示错误。    不过也非常感谢大佬了! image.png

TA的精华主题

TA的得分主题

发表于 2023-4-13 12:44 | 显示全部楼层
saiyang2023 发表于 2023-4-13 12:38
汇总思路是对的。 但内容不全。   拆分提示错误。    不过也非常感谢大佬了!

你的分表的格式不够一致,第一个表多了一个行,你自己修改下再运行试试。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-13 14:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
收到。我再测试一下。非常感谢!!

TA的精华主题

TA的得分主题

发表于 2023-4-13 15:02 | 显示全部楼层
saiyang2023 发表于 2023-4-13 12:38
汇总思路是对的。 但内容不全。   拆分提示错误。    不过也非常感谢大佬了!

chxw68老师的拆分代码没有问题,是你的分表不够规范造成。第一个分表中多了一行,造成合并时多了一个无用行。

TA的精华主题

TA的得分主题

发表于 2023-4-13 16:23 | 显示全部楼层
With wb
                With .Worksheets(1)
                    ThisWorkbook.Worksheets("sheet1").Cells(zrr(k)(0), 1).Resize(zrr(k)(1) - zrr(k)(0) + 1, c).Copy .Range("a1")
                    Rows(1).Delete '加上这句
                End With
                .SaveAs Filename:=ThisWorkbook.Path & "\" & arr(zrr(k)(0), 1)
                .Close False
            End With

TA的精华主题

TA的得分主题

发表于 2023-4-14 13:56 | 显示全部楼层
sunshuangzhong 发表于 2023-4-13 16:23
With wb
                With .Worksheets(1)
                    ThisWorkbook.Worksheets("sheet1"). ...

你不要误导楼主,只有第一个分表中多了一行,其它二个分表是正常的。

应该删分表的数据,代码不用改。

评分

1

查看全部评分

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 15:27 , Processed in 0.048467 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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