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