选择多个带前缀的工作表

时间:2018-08-08 16:48:13

标签: excel-vba copy-paste worksheet-function

尽管我需要从仅以“ 2018和2017”开头的工作表中复制数据,但我正在处理具有多个选项卡的工作表。

我想从这些工作表中复制范围-example(A13:L40),并将它们全部粘贴到另一个“摘要”标签中。

任何帮助或建议都受到高度赞赏

下面是我到目前为止创建的宏,仍然不确定如何添加2017。

Sub Macroif()
    Dim sheet As Worksheet

    Sheets("Summary").Activate

    For Each sheet In Worksheets
        If (sheet.Name Like "2018*") Then
            sheet.Select
            sheet.Range("A13:L40").Copy
            Worksheets("Summary").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues)

        End If
    Next sheet

End Sub

2 个答案:

答案 0 :(得分:0)

您也可以循环浏览工作表,而无需选择工作表。

Sub Macroif()
    Dim sh As Worksheet

    For Each sh In Worksheets
        If sh.Name <> "Summary" Then
            If sh.Name Like "2017*" Or sh.Name Like "2018*" Then
                With sh
                    .Range("A13:L40").Copy
                    With Worksheets("Summary")
                        .Range("A" & .Cells(.Rows.Count, "A").End(xlUp).Row + 1).PasteSpecial (xlPasteValues)
                    End With
                End With
            End If

        End If
    Next sh

End Sub

答案 1 :(得分:-1)

Sheet对象具有属性“ name”,并且有很多方法可以检查字符串中的子字符串。因此,只需遍历所有工作表并检查标题是否以子字符串开头,然后将range对象设置为要复制和复制/粘贴的任何列即可。

编辑:编辑OP后,这是缺少的代码:

If (sheet.Name Like "2018*") Then

将其更改为:

If (Left(sheet.Name,4)="2018") or (Left(sheet.name,4)="2017") Then