VBA:来自包含单元格粘贴范围值的所有工作表

时间:2017-03-09 21:38:46

标签: excel vba excel-vba

我是VBA的新手并且自己学习。我想创建一个代码,在其中我在单元格中键入一个数字(E4,最后一个工作表),当运行宏时,去搜索在单元格F2中匹配该数字的所有工作表,然后搜索与该数字匹配的每个工作表,复制范围(这是一列),然后将所有列粘贴到新工作表中(最后添加)。我以不同的方式尝试了下面的一些代码,有时工作,有时却没有。在其他问题中,下面的代码的问题是,当它工作时,它只从一个发现中复制一列。如果有更好,更优雅的方式来写这个(并使它工作),你的帮助是值得赞赏的。

Sub abc()

Dim wscount As Integer
Dim wb As Workbook
Set wb = ActiveWorkbook
wscount = wb.Worksheets.Count
k = 1
j = 1 

If Worksheets(k).Range("F2").Value = Worksheets(wscount).Range("E4").Value Then
Worksheets(wscount + 1).Range(Cells(1, 1 + j), Cells(100, 1 + j)).Value = Worksheets(k).Range("F1:F100").Value
Worksheets(wscount + 1).Range(Cells(1, 1 + j), Cells(100, 1 + j)) = Worksheets(k).Range("F1:F100").Value

j = j + 1

End If

End Sub

1 个答案:

答案 0 :(得分:0)

您没有添加新工作表,而且您没有在工作表中循环。这是一种方法:

Sub abc()
    Dim wscount As Integer: wscount = Worksheets.Count
    Dim j As Long, k As Long
    Worksheets.Add After:=Worksheets(wscount)

    For k = 1 To wscount - 1
        If Worksheets(k).Range("F2").value = Worksheets(wscount).Range("E4").value Then
            j = j + 1
            Worksheets(wscount + 1).Columns(j).value = Worksheets(k).Columns("F").value
        End If
    Next
End Sub