我找到了很多关于如何在合并工作表时排除列标题的答案,但是在复制初始工作表后我找不到关于如何排除列 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