我在重新编译表中粘贴数据时遇到问题 . 重新编译表就像一个摘要表,将粘贴指定的选定工作表中的所有数据 . 主表是一个参考表,其中范围(“AA”)包含我要复制并粘贴到重新编译表的所有工作表名称 . 工作表名称的示例是工作表A,B,C ...等我只需要在主表单范围(“AA”)中写入工作表名称,程序将跟踪已指定的所有工作表名称 . 我的问题是当我从工作表中粘贴数据时工作表B中的数据,C,D也会粘贴在同一个单元格中,导致它被覆盖 . 我想要做的是粘贴数据工作表A重新编译工作表然后下一个空单元格是工作表B中的数据,依此类推 . 这是我的代码 .
Private Sub CommandButton2_Click()
Dim Sheetname, myrange As String
Dim A, noOfrows As Integer
Dim startRow As Integer
For i = 2 To Worksheets("Master Sheet").Cells.SpecialCells(xlCellTypeLastCell).Row
Sheetname = Worksheets("Master Sheet").Cells(i, 27).Value'Reference sheet range ("AA")
noOfrows = Worksheets(Sheetname).Cells.SpecialCells(xlCellTypeLastCell).Row
myrange = "A2:N" & CStr(noOfrows)'Data from column A to column N
Worksheets(Sheetname).Select
Worksheets(Sheetname).Range(myrange).Select
Selection.Copy
Sheets("Recompile").Select
Range("A2").Select
ActiveSheet.Paste
Next i
End Sub
2 回答
您的代码中有许多内容 . 看到您正在使用迭代/循环接近此过程,只会出现一些混淆 . 我主要担心的是你使用
ActiveSheet
和Select
,并且你的最终动作只涉及一个单元格(Range("A2"
) . 这意味着每次迭代的结果动作只会改变这个单元格 . 请参阅下面的一个可能的方法 .首先,您需要迭代
Master Sheet, Column AA
中找到的工作表的名称 . 接下来,您必须检查与此名称对应的工作表的最后一行 . 根据您的代码,从A2
到Column N
的最后一行的单元格范围被复制到Recompile工作表,从CellA2
(我假设您有 Headers )开始 .但是,在每次复制之后,您还需要做三件事:1 . 移动到工作表名称列表中的下一个名称 . 2.找到与下一个名称对应的工作表的新最后一行 . 3.找到重新编译表的新最后一行,以便从那里开始 .
现在,你需要这个循环次数和床单一样多 . 这个逻辑产生了以下代码( untested ,请在工作簿的备份副本中执行):
这里有一个主要假设:您的工作表名称列表以AA1开头 . 这个很重要 . 如果没有,请将
Iter = 1
更改为Iter = n
,其中n
是列表中真正起始单元格的行号 .如果这有帮助,请告诉我们 .
UPDATE: 当列表在
AA2
中开始时,我已经更新了上面的代码 .Not tested
改变这一部分
至