将数据从一个工作表提取到另一工作表

时间:2019-10-12 06:02:48

标签: excel vba

我希望有人可以帮助我,因为我尝试了其他站点的许多建议,但是找不到解决方案。

我有一个仪表板电子表格和近30个以上的部门电子表格(请参阅所附快照)。

选择“部门”名称(部门名称以及相应的工作表和电子表格名称相同)后,哪一种是获取数据的最佳方法?

可以请我帮忙vba或宏吗?非常感谢你!

从其他部门收到的电子表格:

enter image description here

摘要/仪表板电子表格

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试这个:

首先,您需要一个包含所有图纸的列表。为此,请使用以下功能:

Public Function SheetsName()
    Dim Arr() As String
    Dim i As Integer
    ReDim Arr(Sheets.Count - 1)
    For i = 0 To Sheets.Count - 1
        Arr(i) = Sheets(i + 1).Name
    Next i
    SheetsName = Application.WorksheetFunction.Transpose(Arr)
End Function

此函数将返回一个包含所有图纸的数组。在不使用的一列中的单元格中选择相同数量的工作表,然后键入:= SheetsName()并按Ctrl + Shift + Enter。您将获得此范围内的数据表的列表。

稍后,在单元格Data Validation上使用D2,选择列表并选择所有图纸的范围。

然后使用此小步骤进行复制:

Sub Test()
Dim SourceSheet As Worksheet
Dim TargetSheet As Worksheet
Dim LastRow As Long
Dim LastCol As Long
Dim i As Long

With ThisWorkbook
    Worksheets("Sheet1").Activate
    Set SourceSheet = Worksheets(Range("D2").Value2)
    Set TargetSheet = Worksheets("Sheet1")
End With

LastRow = SourceSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
LastCol = SourceSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column

For i = 1 To LastRow
    For j = 1 To LastCol
        SourceSheet.Cells(i, j).Copy Destination:=TargetSheet.Cells(i + 9, j)
    Next j
Next i

End Sub

仅此而已。 复制指令不适用于合并的单元格。

希望有帮助

相关问题