我正在寻找一些我已经拥有的代码,用于将来自多个工作表的数据合并为一个主表。
当前,VBA会选择所有以前缀“ A-”开头的工作表,然后复制所选单元格并将其粘贴到合并工作表中。
我要进行的更改不是选择以“ A-”开头的工作表,而是选择两张工作表之间的所有工作表。为了简单起见,我们将其称为“ StartSheet”和“ EndSheet”
说明性的是,看起来像这样:
<起始页> <分析1> <分析2> <分析3> <末页>
我或其他人的理性存在然后可以将分析表放在书挡之间,而不必担心查找和命名约定。
我已经尝试了几种方法来尝试将现有代码与我在网上找到的其他示例融合在一起,但是似乎都没有用。非常感谢帮助!
Sub compile()
SelectSheets "A-", ThisWorkbook
'Some other bits and pieces here
End Sub
Sub SelectSheets(sht As String, Optional wbk As Workbook)
Dim wks As Worksheet
Dim ArrWks() As String
Dim I As Long
If wbk Is Nothing Then Set wbk = ActiveWorkbook
ReDim ArrWks(0 To Worksheets.Count - 1)
For Each wks In Worksheets
If InStr(1, wks.Name, sht) > 0 Then
ArrWks(I) = wks.Name
I = I + 1
End If
Next wks
ReDim Preserve ArrWks(I - 1)
Sheets(ArrWks).Select
Application.ScreenUpdating = False
For Each ws In Sheets(ArrWks)
ws.Range("A23:CU27,A35:CU54,A56:CU58,A62:CU71,A74:CU84").Copy
Worksheets("consol").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues)
Next ws
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:0)
这是答案!
Sub COMPILE()
Dim i As Long
For i = Sheets("Start").Index + 1 To Sheets("End").Index - 1
Sheets(i).Range("A23:CU27,A35:CU54,A56:CU58,A62:CU71,A74:CU84").Copy
Worksheets("consol").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Next i
Application.CutCopyMode = False
End Sub