[Excel VBA]指定行数将所有工作表合并

可以将工作簿中的所有工作表的内容,汇总合并到新工作表。

可以设置合并的子表有效数据的行数,这个行数,会作为激活单元格每次合并后的下沉行数,从而保证格式基本统一,或者各表之间内容有明显间隔。

For i = 2 To Sheets.Count代表首表不参与合并,如果需要参与可以改为1


模块代码


Sub test()
Dim sh As Worksheet, flag As Boolean, i As Integer, hrow As Integer, hrowc As Integer
flag = False
For i = 1 To Sheets.Count
 If Sheets(i).Name = "合并数据" Then flag = True
Next
If flag = False Then
Set sh = Worksheets.Add
sh.Name = "合并数据"
Sheets("合并数据").Move after:=Sheets(Sheets.Count)
End If
For i = 1 To Sheets.Count
If Sheets(i).Name <> "合并数据" Then
 hrow = Sheets("合并数据").UsedRange.Row
 hrowc = Sheets("合并数据").UsedRange.Rows.Count
 If hrowc = 1 Then
 Sheets(i).UsedRange.Copy Sheets("合并数据").Cells(hrow, 1).End(xlUp)
 Else
 Sheets(i).UsedRange.Copy Sheets("合并数据").Cells(hrow + hrowc - 1, 1).Offset(1, 0)
 End If
End If
Next i
End Sub

 

按钮代码


Private Sub CommandButton4_Click()
Dim sh As Worksheet, flag As Boolean, i As Integer, hrow As Integer, hrowc As Integer
Dim tip
tip = MsgBox("将所有拆分好的教师工资条,整合到一个工作表,方便打印,汇总表并不会被整合,请确认已执行过拆分工作表", vbOKCancel)
If tip <> 1 Then
Exit Sub
End If

Dim tRow
tRow = Val(Application.InputBox("请输入每个工作表的整合行数?"))
If tRow = 0 Then
MsgBox "你未输入整合行数,程序退出。": Exit Sub
End If

flag = False
For i = 1 To Sheets.Count
 If Sheets(i).Name = "合并工资条" Then flag = True
Next
If flag = False Then
Set sh = Worksheets.Add
sh.Name = "合并工资条"
Sheets("合并工资条").Move after:=Sheets(Sheets.Count)
End If
For i = 2 To Sheets.Count
If Sheets(i).Name <> "合并工资条" Then
 hrow = Sheets("合并工资条").UsedRange.Row
 hrowc = Sheets("合并工资条").UsedRange.Rows.Count
 If hrowc = 1 Then
 Sheets(i).Range("A1:ZZ" & tRow).Copy Sheets("合并工资条").Cells(hrow, 1).End(xlUp)
 Else
 Sheets(i).Range("A1:ZZ" & tRow).Copy Sheets("合并工资条").Cells(hrow + hrowc - 1, 1).Offset(1, 0)
 End If
End If
Next i
End Sub

 

原创文章,作者:熊阿初,如若转载,请注明出处:https://www.guofc.com/367.html

(0)
熊阿初熊阿初
上一篇 2022年11月9日
下一篇 2022年12月11日

相关推荐

发表回复

登录后才能评论