VBA匹配单元格范围到工作表名称并复制/粘贴到相应的工作表

时间:2016-07-11 02:39:24

标签: excel vba macros

我尝试编写一个与工作表名称中的单元格匹配的宏,然后从该工作表中提取数据,然后使用初始工作表将其复制到下一列中。这就是我到目前为止所拥有的:

Sub example() 

 Dim wkSht As Worksheet

  For Each wkSht In Sheets

    For Each Cell In Sheets("Reporting").Range("B2:B200")

        If Cell.Value = wkSht.Name Then

            On Error Resume Next

            wkSht.Range("D15").Copy Destination:=Sheets("Reporting").Range("c2:c36")

        End If

    Next Cell

 Next wkSht

End Sub

我想为整个专栏做这个,但我不知道在下一栏中复制它的代码。基本上,它会将Cell (B2)与工作表标签名称匹配,然后从相应选项卡中的相同单元格中拉出,然后复制到下一个column (C2)。我会为b3b4b5执行此操作,直至b200。谢谢!

2 个答案:

答案 0 :(得分:0)

我想我已经理解了你的问题。在将数据复制到新列时,您需要一个辅助变量来增加。

代码,

Sub example()

  Dim wkSht As Worksheet
  Dim i As Long

    i = 3
    For Each wkSht In Sheets

        For Each Cell In Sheets("Reporting").Range("B2:B200")

            If Cell = wkSht.Name Then

                On Error Resume Next
                Sheets("Reporting").Cells(2, i).Resize(35).Value = wkSht.Range("D15").Value
                i = i + 1

            End If

        Next Cell

    Next wkSht

End Sub

使用long变量i将允许您存储下一个可用列的位置以输入数据。

答案 1 :(得分:0)

您可以使用Offset()指定在ColB中具有相对于单元格位置的单元格:

Sub example() 

 Dim wkSht As Worksheet

  For Each wkSht In Sheets

    For Each Cell In Sheets("Reporting").Range("B2:B200")

        If Cell.Value = wkSht.Name Then

            wkSht.Range("D15").Copy Destination:=Cell.Offset(0,1)

        End If

    Next Cell

 Next wkSht

End Sub