[英]Excel VBA macro to copy specific rows from workbook sheets into new summary sheet…almost works
[英]VBA Copy specific rows from multiple sheets with their names containing “Hawk” and paste into new sheet
我有一个包含多个电子表格的工作簿。 其中一些电子表格的名称中包含“Hawk”一词。 例如,“12345 - HAWK”和“ABCDE - Hawk”。 我需要将这些工作表中的数据从第 38 行开始复制到 Hawk 工作表包含的多行,并将其粘贴到新的电子表格中。
我有从另一个线程获得的这段代码,但它只是粘贴了最后一张工作表中包含“Hawk”一词的行。 我需要它从包含“鹰”的名字,而不仅仅是最后一个EVERY片粘贴。
我没有任何 VBA 经验,所以我不确定出了什么问题。 任何建议将不胜感激。
Option Explicit
Sub compile()
SelectSheets "Hawk", 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)
Dim ws As Long
For ws = LBound(ArrWks) To UBound(ArrWks)
Worksheets(ArrWks(ws)).Range("A37:AC100").Copy
Worksheets("VBA").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues)
Next ws
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Public Sub compile()
Dim sh As Worksheet, lastrow As Long, lastcol As Long, i As Long
i = 1 'For paste data in first row in MasterSheet.
Sheets("MasterSheet").Cells.ClearContents 'Clear previous data.
For Each sh In ThisWorkbook.Worksheets
If InStr(1, UCase(sh.Name), UCase("HAWK")) > 0 Then
'IF your data is inconsistent then use find function to find lastrow an lastcol.
lastrow = sh.Cells(Rows.Count, 1).End(xlUp).Row
lastcol = sh.Cells(38, Columns.Count).End(xlToLeft).Column
'Here we collect data in master sheet.
Sheets("MasterSheet").Range("A" & i).Resize(lastrow - 38 + 1, lastcol).Value = sh.Range("A38", sh.Cells(lastrow, lastcol)).Value
i = i + lastrow - 38 + 1
End If
Next sh
End Sub
使用这个而不是你的代码..它将收集从“A38”范围到最后一行和最后一列的所有数据并粘贴到母版表中..检查这个并让我知道它是否有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.