代码如下, 详见附件的示例文件。
Sub MergeData()
'将其他sheet的同列数据合并到第一张sheet
Dim i As Integer, N As Integer
Dim j As Long, k As Long
N = Sheets.Count
'如果工作簿中只有一张工作表,则退出
If N = 1 Then Exit Sub
'确定工作表的列数(假定其他工作表都与第一张工作表数据结构相同)
'采用第一张工作表中第一列最后一行不为空的单元格的相邻区域的列数来确定
'不采用A1相邻区域的列数来确定是防 止习惯将第1行留空或者第一行设为总标题,其下留空行的大众化习惯
With Sheets(1)
k = .Cells(.Rows.Count, 1).End(xlUp).CurrentRegion.Columns.Count
End With
'确定其他工作第一行是否为标题行
'如果有标题行,则复制时应不包含标题行
Dim Response, r As Integer
Response = MsgBox("要合并数据的工作表中第一行为标题行吗?", vbYesNo)
If Response = vbYes Then
r = 2
Else
r = 1
End If
Application.ScreenUpdating = False
For i = 2 To N
With Sheets(i)
j = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range(.Cells(r, 1), .Cells(j, k)).Copy Sheets(1).Cells(Sheets(1).Rows.Count, 1).End(xlUp).Offset(1, 0)
End With
Next i
Application.ScreenUpdating = True
Application.CutCopyMode = False
End Sub