我是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
答案 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