Excel 如何将相同部分的数据从232页复制到表中?
我试图从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_ :=假,转置
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)
注意,我更改了“