将工作表拆分为工作簿

问题描述 投票:0回答:1

我有一个电子表格要拆分。

例如,我有 A、B、C 和 D 列,我需要将工作表拆分为:

第一本练习册 - A 列和 B 列
第二本练习册 - A 列和 C 列
第三本练习册 - A 列和 D 列

这适用于大约 350 列,并且 A 列需要是常数。

Sub t()
    Dim lc As Long, sh As Worksheet, newSh, ws1 As Worksheet
    Set ws1 = ThisWorkbook.Sheets("Sheet2")
    Set sh = ActiveSheet
    With sh
        lc = .Cells.Find("*", , xlValues, xlPart, xlByColumns, xlPrevious).Column
        For i = 1 To lc
            If Application.CountA(.Columns(i)) > 0 Then
            
                Set newSh = Sheets.Add
                ws1.Range("a:a").Copy Range("a:a")
                Intersect(.UsedRange, .Columns(i)).Copy newSh.Range("A1")
                newSh.Copy
            
                ActiveWorkbook.SaveAs newSh.Range("a1").Value & ".xlsx"
                ActiveWorkbook.Close
                Application.DisplayAlerts = False
                newSh.Delete
                Application.DisplayAlerts = True
            End If
        Next
    End With
End Sub

这会拆分出各个列,我每次都需要添加 A 列。

excel vba
1个回答
0
投票

在这段代码中:

ws1.Range("a:a").Copy Range("a:a")
Intersect(.UsedRange, .Columns(i)).Copy newSh.Range("A1")

两次都输出到A列。因此,A 列每次都会被复制,但会被您复制的其他列覆盖。通过输出到第二行的

"B1"
来修复此问题。

© www.soinside.com 2019 - 2024. All rights reserved.