我有一个包含100张的Excel工作簿(名为Peak)(每张Sheet以Sheet1开头,后跟一个唯一的名称Sheet1AA),我想从每个Peak Sheet复制一列并使用转置粘贴到一个新的工作簿(名为Table),因此,Table将有来自Peak Workbook Sheets的100行数据 . 下面是复制然后粘贴两个工作表的示例,第二个工作表(Sheet1BB)粘贴在表中第一个工作表(Sheet1AA)下面 . 我知道我可以在复制/粘贴转置时录制宏,但希望有一种方法可以编写一个宏来连续复制/粘贴从Peak Workbook(Sheet1AA-Sheet1ZZ)到工作簿表的顺序提供100行数据,Sheet1AA中的数据是第一行,Sheet1ZZ是表中的最后一行 . 谢谢
Windows("Peak.xlsm").Activate
Sheets("Sheet1AA").Select
Range("O6:O150").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Table.xlsm").Activate
Range("E4:AB4").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Windows("Peak.xlsm").Activate
Sheets("Sheet1BB").Select
Range("O6:O150").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Table.xlsm").Activate
Range("E5:AB5").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
2 回答
未经测试:
由于OP需要维护按父表名称排序的粘贴数据,因此下面是两个可能的代码:
temporary helper column
这种方法
在列“E”之前插入一个(临时)列,用于存储工作表名称,而相应的数据从下一列写入到rigthwards .
对(临时)列“E”中的工作表名称的粘贴范围进行排序
删除临时列
array with ordered sheet names
这需要将它们写在临时表格中(在
ThisWorkbook
中),对它们进行排序并将它们读回来(参见Function GetSortedWsNames()
)