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

时间:2016-10-10 17:26:20

标签: excel vba excel-vba

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

LASTROW:

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

LastColumn:

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

但我现在需要复制数据。我可以很好地复制行。然而,列是我被抓住的地方。我对Copy / Paste方法很陌生,并且我不确定如何修复它,因为我总是使用一系列单元名称。

这将为我提供所需的行,以及在复制到最后一列时所需的所有列。

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

如何将其转换为AZ实际上是所需的最后一列?有没有简单的方法可以解决这个问题,还是需要设置一个案例来将列号转换为单元格值?

答案:

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

可以通过明确说明组成该范围的单元格来指定复制范围。使用'With',你可以写这样的东西来完成你需要的东西:

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