将每第1000行复制到新工作表

时间:2017-04-27 22:55:38

标签: excel excel-vba excel-formula vba

  • 我的工作簿有167张
  • 每张图纸有1000行。
  • 我需要一张新工作表,其中包含每张工作表中所有最后一行的列表。

所以我最终得到一张包含167行的工作表,每张工作表的第1000行都复制到新工作表中。

3 个答案:

答案 0 :(得分:1)

有一个优秀的免费插件ASAP Utilities,可以在许多其他选项中提供此功能。

您需要的实用程序是Sheets » Put together rows or columns from several sheets..

答案 1 :(得分:0)

您可以使用'INDIRECT'。您需要将工作表名称放在第一列,第一行中的列标识符('A','B','C'等)如

enter image description here

然后您可以从B2开始使用以下内容,然后向下复制:

=INDIRECT("'"&$A2&"'!"&B$1&"1000")

这告诉Excel公式的文本结果实际上是对特定单元格的引用,使用公式($ A2和B $ 1)中单元格的内容作为该文本字符串的一部分。

答案 2 :(得分:0)

您可以将此代码用于VBA,我已对代码进行了评论,以便您可以查看每行的内容。

Sub CopyRows()

Dim rowCounter As Long
Dim lastShtName As String

' ** COUNTER FOR EACH ROW, INCREMENT EACH TIME A ROW IS COPIED
rowCounter = 1

' ************************************************
' **** SET SHEET NAME VARIABLE FOR LAST SHEET ****

           lastShtName = "LastSheet"

' ************************************************
' ************************************************

' ** LOOP THROUGH SHEETS
For Each sht In ThisWorkbook.Sheets

    ' ** LOOP THROUGH ALL SHEETS EXCEPT FOR LAST SHEET, WHICH DATA IS PASTED ON. UPDATE SHEET NAME TO MATCH
    If sht.Name <> lastShtName Then

        ' ** COPY WHOLE ROW
        ThisWorkbook.Sheets(lastShtName).Range("A" & rowCounter).EntireRow.Value = sht.Range("A" & 1000).EntireRow.Value

        ' ** INCREMENT COUNTER
        rowCounter = rowCounter + 1

    End If

' ** CONTINUE LOOP
Next sht

End Sub