【问题标题】:A List From Same Cells Across Multiple Sheets In Excel with sheet namesExcel中跨多个工作表的相同单元格的列表以及工作表名称
【发布时间】:2019-08-01 18:19:17
【问题描述】:

伙计们。我有一个包含多张工作表的工作簿,超过 200 个。我正在尝试在 excel 中创建一个名为“SUMMARY”的摘要表,其中在一个列中列出所有工作表的名称,在另一列中列出单元格 J2(在​​每个工作表中)的内容柱子。 我发现下面的代码返回一列,其中包含每个工作表的 J2 单元格的内容,但不返回具有工作表名称的列,因此我无法使用它。您能否提供一些提示如何实现代码以返回两列?

Sub MakeSummaryTableOfACellAcrossSheets()
    Dim ws As Worksheet

    Application.ScreenUpdating = False
    Sheets("SUMMARY").Activate

    For Each ws In Worksheets
        If ws.Name <> "ITEMS FAMILY" Then
            ws.Range("J2").Copy
            ActiveSheet.Paste Range("A65536").End(xlUp).Offset(1, 0)
        End If
    Next ws

    Application.ScreenUpdating = True

End Sub 

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这会将工作表名称放在摘要的 A 列中,将 J2 放在 B 列中。

    我假设您还想从循环中排除 Summary。

    直接传递值而不是复制和粘贴更快。

    使用 Rows.Count 而不是硬编码 65336,因为 Excel 现在有超过一百万行。

    Sub MakeSummaryTableOfACellAcrossSheets()
    
    Dim ws As Worksheet
    
    Application.ScreenUpdating = False
    
    For Each ws In Worksheets
        If ws.Name <> "ITEMS FAMILY" And ws.Name <> "SUMMARY" Then
            Sheets("SUMMARY").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = ws.Name
            Sheets("SUMMARY").Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Value = ws.Range("J2").Value
        End If
    Next ws
    
    Application.ScreenUpdating = True
    
    End Sub
    

    【讨论】:

    • 它解决了我的问题 ;)
    猜你喜欢
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    相关资源
    最近更新 更多