将两个“书挡”之间几张纸的数据合并为一张纸

时间:2019-07-25 07:51:19

标签: excel vba

我正在寻找一些我已经拥有的代码,用于将来自多个工作表的数据合并为一个主表。

当前,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

1 个答案:

答案 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
相关问题