Excel:如何将不同长度的单个列复制到新标签中?

我还是macros观写作的另一个新手…这是我正在做的事情:

将一张纸上的某些列复制到另一张纸上,其长度或行数可能会有所不同。 似乎简单的权利? 但我似乎无法得到它。

Dim RowS01Max As Integer Dim Sheet1Data() As Variant With Sheets("sheet1") RowS01Max = .Cells(Rows.Count, "A").End(xlUp) Sheet1Data = .Range(.Cells(2, 1), .Cells(RowS01Max, 1)).Value End With With Sheets("Sheet2") .Range(.Cells(2, 5), .Cells(RowS01Max, 5)).Value = Sheet1Data End With 

所以这个工程,如果我只想复制一列(“A”),我如何扩大范围,我相信这是一个简单的修复?

任何提示都表示赞赏。

干杯

桑德拉

一个Excel工作表的有用属性是UsedRange :这将返回一个VBA范围对象,表示在其中包含数据的指定工作表的区域。 了解一个表单的VBA代码名也很方便, 这个代码在本文中已经很清楚地解释了。
考虑到这一点,我们可以使用Intersect函数计算一个代表给定列(或列)中使用的单元格的范围,然后将其复制到我们select的目的地。

 Dim rng As Range Set rng = Intersect(Sheet1.Usedrange, Sheet1.Range("A:A")) rng.Copy Destination:=Sheet2.Range("B5") 

希望这可以帮助!

这是使用一些variables的一段代码。 我通常会统计我有多less行以便只复制到该行的大小。

我有这样的东西:

 Set Compiled = Sheets("Compiled Sheet") Set Cycle = Sheets("Cycle Sheet") countNum = Application.CountA(Range("A:A")) ' Counts how many rows you have CompileHeader = Compiled.Range("CD1").Value ' Copies header title. Compiled.Range("CD2:CD" & countNum).Value = Cycle.Range(ColumnLetter & "2:" & ColumnLetter & countNum).Value 

所以在上面的代码中,我将复制列CD(我知道,在我的项目中的很多列)到设置为“Cycle”的“Cycle Sheet”中。 它很好设置表单,不必下去,以后重命名所有的代码,因为这往往是一个dynamic的价值。