Excel 如何将相同部分的数据从232页复制到表中?

Excel 如何将相同部分的数据从232页复制到表中?,excel,vba,Excel,Vba,我试图从232个连续的电子表格中复制一组数据,然后将其转储到主电子表格中 我似乎在激活工作表时出错了 Sub-mcrExtractData() 作为整数的Dim i Dim introw为整数 对于i=1到10 对于introw=1到10 图纸(“图纸和i”)。选择范围(“B3:B5”)。选择 选择,复制 图纸(“图纸500”)。选择 范围(“A&introw”)。选择 Selection.Paste特殊粘贴:=xlPasteValues,操作:=xlNone,SkipBlank_ :=假,转置

我试图从232个连续的电子表格中复制一组数据,然后将其转储到主电子表格中

我似乎在激活工作表时出错了

Sub-mcrExtractData()
作为整数的Dim i
Dim introw为整数
对于i=1到10
对于introw=1到10
图纸(“图纸和i”)。选择范围(“B3:B5”)。选择
选择,复制
图纸(“图纸500”)。选择
范围(“A&introw”)。选择
Selection.Paste特殊粘贴:=xlPasteValues,操作:=xlNone,SkipBlank_
:=假,转置:=真
图纸(“图纸和i”)。选择
范围(“Q7:Q12”)。选择
Application.CutCopyMode=False
选择,复制
图纸(“图纸500”)。选择
范围(“A&introw”)。选择
Selection.Paste特殊粘贴:=xlPasteValues,操作:=xlNone,SkipBlank_
:=假,转置:=真
下一篇介绍
接下来我
端接头
从多个工作表复制范围 代码

Option Explicit

Sub mcrExtractData()
    
    Const tgtName As String = "Sheet500"
    Const tgtFirst As String = "A2"
    Const genName As String = "Sheet"
    Const NumberOfWorksheets As Long = 232

    ' Define workbook.
    Dim wb As Workbook
    Set wb = ThisWorkbook
    
    ' Define Source Array ('Source').
    Dim Source As Variant
    ReDim Source(1 To NumberOfWorksheets, 1 To 2)
    
    ' Declare additional variables before loop.
    Dim ws As Worksheet ' Current Source Worksheet,
                        ' Target Worksheet.
    Dim i As Long       ' Current Worksheet Index,
                        ' Current Source Array Row,
                        ' Current Target Array Row.
    
    ' Write values from Source Worksheets to arrays of Source Array.
    For i = 1 To NumberOfWorksheets
        Set ws = wb.Worksheets(genName & i)
        Source(i, 1) = ws.Range("B3:B5").Value
        Source(i, 2) = ws.Range("Q7:Q12").Value
    Next i
    
    ' Define Target Array ('Target').
    Dim Target As Variant
    ReDim Target(1 To NumberOfWorksheets, 1 To 9)
    
    ' Declare additional variables before loop.
    Dim j As Long ' Current Target Array Column.
    
    ' Write values from arrays of Source Array to Target Array.
    For i = 1 To NumberOfWorksheets
        For j = 1 To 3
            Target(i, j) = Source(i, 1)(j, 1)
        Next j
        For j = 4 To 9
            Target(i, j) = Source(i, 2)(j - 3, 1)
        Next j
    Next i
    
    ' Define Target Worksheet ('ws').
    Set ws = wb.Worksheets(tgtName)
    ' Write values from Target Array to Target Range.
    ws.Range(tgtFirst).Resize(NumberOfWorksheets, 9).Value = Target
    
End Sub

您正在复制9个值。是否要将它们从
A
列粘贴到
Sheet500
中第一行的
I
列?最好共享每个要复制的工作表的确切范围。我们知道每个工作表上有多少行或列吗?每个电子表格是从单元格“A1”开始的,还是有所不同?每个选项卡中的每个单元格是否都有值,或者其中的一些单元格是否为空?
Sheets(“Sheet&i”)
Range(“a&introw”)
毫无意义。VBA正在搜索与此完全相同的工作表/单元格。我认为您应该使用
工作表(“工作表”&I)
范围(“A”&introw)
注意,我更改了