Excel精英培训网

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

[已解决]按总表的表1表2表3A列拆分成文件

[复制链接]
发表于 2021-3-5 11:59 | 显示全部楼层 |阅读模式
各位好,求助:
根据 按总表的表1表2表3A列的公司拆分成A、B、C三个文件,并且每个文件的表1表2表3都保留,具体见附件,谢谢。
最佳答案
2021-3-5 14:03
Sub demo()

   Application.DisplayAlerts = False

   dummy = ThisWorkbook.Name & ".dummy"
   ActiveWorkbook.SaveCopyAs dummy

   arr = [a1].CurrentRegion
   col = UBound(arr, 2)

   For i = 2 To UBound(arr)
      Path = ThisWorkbook.Path & "\" & arr(i, 1) & ".xlsx"
      Set wb = Workbooks.Open(dummy)
      For s = 1 To Sheets.Count
         With Sheets(s)
            .Range(.Cells(i, 1), .Cells(i, col)).Copy .Range("A2")
            .UsedRange.Offset(2).Clear
         End With
      Next
      wb.SaveAs Path, FileFormat:=xlOpenXMLWorkbook
      wb.Close
   Next

End Sub


祝順心,南無阿彌陀佛!


附件.rar

32.71 KB, 下载次数: 9

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2021-3-5 14:03 | 显示全部楼层    本楼为最佳答案   
Sub demo()

   Application.DisplayAlerts = False

   dummy = ThisWorkbook.Name & ".dummy"
   ActiveWorkbook.SaveCopyAs dummy

   arr = [a1].CurrentRegion
   col = UBound(arr, 2)

   For i = 2 To UBound(arr)
      Path = ThisWorkbook.Path & "\" & arr(i, 1) & ".xlsx"
      Set wb = Workbooks.Open(dummy)
      For s = 1 To Sheets.Count
         With Sheets(s)
            .Range(.Cells(i, 1), .Cells(i, col)).Copy .Range("A2")
            .UsedRange.Offset(2).Clear
         End With
      Next
      wb.SaveAs Path, FileFormat:=xlOpenXMLWorkbook
      wb.Close
   Next

End Sub


祝順心,南無阿彌陀佛!


总表.rar

16.42 KB, 下载次数: 4

评分

参与人数 1学分 +2 收起 理由
chensir + 2 十分感谢

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-3-8 11:22 | 显示全部楼层
cutecpu 发表于 2021-3-5 14:03
Sub demo()

   Application.DisplayAlerts = False

如果满足以下条件如何操作:
1、某公司在表1中存在;
2、某公司在表1、表2中存在;
3、某公司在表1、表2、表3中存在;
4、某公司在表2中存在;
5、某公司在表2、表3中存在;
6、某公司表3中存在
这6种情况表1、表2、表3文件表都保留,即使里面没有数据,请问如何操作,谢谢。
例如:第2种情况,A公司在表1、表2中存在,那么拆分的A文件里,表1、表2是A公司的信息,表3为空。
不知道说清楚了吗,谢谢。
回复

使用道具 举报

发表于 2021-3-8 19:40 | 显示全部楼层
chensir 发表于 2021-3-8 11:22
如果满足以下条件如何操作:
1、某公司在表1中存在;
2、某公司在表1、表2中存在;

Sub demo()

   Application.DisplayAlerts = False
   Application.ScreenUpdating = False

   dummy = ThisWorkbook.Path & "\" & ThisWorkbook.Name & ".dummy"
   ActiveWorkbook.SaveCopyAs dummy

   ReDim d(1 To 3)
   For i = 1 To 3
      Set d(i) = CreateObject("Scripting.Dictionary")
      arr = Sheets(i).[a1].CurrentRegion
      For r = 2 To UBound(arr)
         d(i)(arr(r, 1)) = r
      Next
   Next

   For i = 1 To 3
      keys = d(i).keys
      For Each Key In keys
         Set wb = Workbooks.Open(dummy)
         For s = 1 To 3
            With Sheets(s)
               If d(s).exists(Key) Then
                  r = d(s)(Key)
                  .Range(.Cells(r, 1), .Cells(r, 2)).Copy .Range("A2")
                  .UsedRange.Offset(2).Clear
                  d(s).Remove Key
               Else
                  .UsedRange.Offset(1).Clear
               End If
            End With
         Next
         Path = ThisWorkbook.Path & "\" & Key & ".xlsx"
         wb.SaveAs Path, FileFormat:=xlOpenXMLWorkbook
         wb.Close
      Next
   Next
End Sub

祝順心,南無阿彌陀佛!

总表.rar

17.65 KB, 下载次数: 7

评分

参与人数 1学分 +2 收起 理由
chensir + 2 感谢,感谢

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-30 10:35 , Processed in 2.231891 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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