VBA脚本用于复制下一个工作表中的列并粘贴到第一个工作表中的下一个空列

时间:2015-06-07 14:55:22

标签: excel vba loops excel-vba

我需要为以下情况编写一个简短的VBA脚本。该工作簿包含多个工作表。第一张表是摘要表。摘要表后有不规则数量的表格,其中包含我要在摘要表格中显示的信息。信息始终位于“B列”中。该脚本应复制每个工作表的“B列”并将其粘贴到摘要表中的下一个空列。换句话说,它应该复制“Sheet 2”中的“Column B”并将其粘贴到“Sheet 1”中的下一个空列,然后复制“Sheet 3”中的“Column B”并再次粘贴到下一个空列中。 “表1”等。

感谢所有帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

您需要声明Worksheet类型变量(例如Dim ws As Worksheet),以For Each ws In Activeworkbook.Worksheets ... Next ws循环。然后,您需要定义哪个工作表是主工作表。我再推荐Worksheet,例如Set wsMain = ActiveWorkbook.Worksheets("Summary")。 要完成它,请使用

wsMain.Cells.Find("*",SearchOrder:=xlByColumns,SearchDirection:=xlPrevious).Column

告诉您摘要表中上次使用的列的索引。您可以将其存储在变量中,然后在循环中将其增加一个,或者在循环中运行它(不是资源有效但是关心那两毫秒)。
您可以按索引引用列,在您的情况下,ws.Cells.Columns(2)wsMain.Cells.Columns(LastColumn + 1) 编写代码很有乐趣,希望我能提供帮助!

答案 1 :(得分:1)

这有效:

Sub NextWsToNextEmptyColumn()

Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets

ws.Cells.Columns(2).Copy Sheets(1).Cells(1, Columns.Count).End(xlToLeft).Offset(, 1)

Next ws

End Sub