0

我找到了很多关于如何在合并工作表时排除列标题的答案,但是在复制初始工作表后我找不到关于如何排除列 A 的任何答案。请帮忙。警告:我对 VBA 很陌生,我可能做了一些愚蠢的事情,但我已经尝试了 2 天来完成这项工作。在结束 if 语句之前,我不断收到最后两行代码的错误。我第一次发布问题,所以建议是否有更好的方法来做到这一点。

我想要的简单描述:

  • 注意:所有工作表始终有 365 行,工作表数和列数各不相同。
  • 拿一张表并将数据复制到新的“主”表,所有列和所有行
  • 所有其他工作表将具有完全相同的 A 列,但需要通过未知数量的列将 B 添加到主工作表中的下一个空列。

示例
工作表 1 有 365 行,只有 A 列和 B 列工作表 2 有 365 行,A 到 D 列有数据 新主工作表有 365 行,包含工作表 1 和工作表 2 中的 B 到 H 列的所有内容将添加到主表作为 C 到 E 列

这是我的代码:

Dim ws As Worksheet
Dim wsMain As Worksheet
Dim DataRng As Range
Dim Col As Long
Dim Cnt As Integer

Application.DisplayAlerts = False
On Error Resume Next
Sheets("Report").Delete
Sheets("Wex").Delete
Sheets("C Locs").Delete
Application.DisplayAlerts = True
On Error GoTo 0
Sheets.Add().Name = "Master"

Application.ScreenUpdating = False


Cnt = 1

Set wsMain = Worksheets("Master")
For Each ws In ThisWorkbook.Worksheets

If ws.Name <> wsMain.Name Then
If Cnt = 1 Then
Set DataRng = ws.Cells(1, 1).CurrentRegion
DataRng.Copy wsMain.Cells(1, Cnt)
Else: Col = wsMain.Cells(1, Columns.Count).End(xlToLeft).Column + 1

DataRng.Offset(0, 1).Resize(DataRng.Rows.Count, DataRng.Columns.Count - 1).Copy ActiveSheet.Cells(1, Col)

End If
End If
Cnt = Cnt + 1
Next ws



Application.ScreenUpdating = True

End Sub
4

1 回答 1

0
For Each ws In ThisWorkbook.Worksheets

    If ws.Name <> wsMain.Name Then
        If Cnt = 1 Then
            Set DataRng = ws.Cells(1, 1).CurrentRegion
            DataRng.Copy wsMain.Cells(1, 1)
        Else
            With ws.Cells(1, 1).CurrentRegion
                Set DataRng = .Resize(.Rows.Count, .Columns.Count - 1).Offset(0, 1)
                DataRng.Copy wsMain.Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1)
            End With
        End If

        Cnt = Cnt + 1
    End If

Next ws
于 2013-04-02T22:01:04.033 回答