Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel中多张工作表中相同单元格的列表,带有工作表名称_Excel_Vba - Fatal编程技术网

Excel中多张工作表中相同单元格的列表,带有工作表名称

Excel中多张工作表中相同单元格的列表,带有工作表名称,excel,vba,Excel,Vba,伙计们。我有一本多页的工作簿,超过200页。我试图在excel中创建一个名为“summary”的汇总表,其中列出一列中所有工作表的名称以及另一列中每个工作表中单元格J2的内容。 我发现下面的代码返回一列,其中包含每个工作表的J2单元格的内容,但不包含包含工作表名称的列,因此我无法使用该代码。您能否给出一些技巧,如何实现代码以返回这两个列 Sub MakeSummaryTableOfACellAcrossSheets() Dim ws As Worksheet Applicati

伙计们。我有一本多页的工作簿,超过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 


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

我假设您还想从循环中排除摘要

直接传输值比复制和粘贴要快得多

使用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

它解决了我的问题;