使用lastcol&lastrow将信息从一张纸复制并粘贴到另一张纸上

我知道复制和粘贴不是一个推荐的方法,但是我们正在继续。 我目前在每张纸上都有大量的数据。 当我从行中复制数据(Works完美)时,我正在避免最后一行。 而当我复制栏目(作品完美)时,我正在避开最后一栏。

LASTROW:

Lastrow = Cells(Rows.count, "A").End(xlUp).Row - 1 

LastColumn:

 With ActiveSheet lastcol = .Cells(4, .Columns.count).End(xlToLeft).Column - 1 End With 

我现在需要现在复制数据。 我可以很好地复制行。 然而,这些专栏是我陷入困境的地方。 我对复制/粘贴方法很陌生,我不确定如何去解决这个问题,因为我总是使用一系列单元格名称。

这将给我所需的行,以及所有需要的列,因为我正在复制过去的最后一列。

 Sheets("Sheet2").Range("A4:AZ" & Lastrow).Copy Sheets(PlantArr(e)).Range("A1") 'Copy info to new sheet 

我怎样才能转换这样的AZ实际上是最后一列需要? 是否有一个简单的方法来解决这个问题,或者我需要build立一个案例,将列号转换为单元格值?

回答:

 gAddress = Split(Cells(1, lastcol).Address(True, False), "$") 'Converts Lastcol number into alphabet character letter = gAddress(0) Sheets("Sheet2").Range("A4:" & letter & Lastrow).Copy Sheets(PlantArr(e)).Range("A1") 'Copy info to new sheet 

经过一番挖掘,我发现你可以从列值中取出一个地址。 我希望下面的代码可以帮助任何想要将列号转换为字母列的人。

 Dim gAddress gAddress = Split(Cells(1, lastcol).Address(True, False), "$") letter = gAddress(0) 

可以通过明确指定哪些单元格构成该范围来指定复制范围。 使用'与',你可以写这样的事情来完成你所需要的东西:

 Sub copy_col_and_rows() Dim Lastrow As Integer: Dim lastcol As Integer: With ActiveSheet Lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row - 1 lastcol = .Cells(4, Columns.Count).End(xlToLeft).Column - 1 End With With Sheets("Sheet2") .Range(.Cells(1, 4), .Cells(Lastrow, lastcol)).Copy Destination:=Sheets(PlantArr(e)).Range("A1") 'Where .Cells(1,4) corresponds to "A4" End With End Sub