2016-10-10 21 views
0

コピーと貼り付けはおすすめの方法ではないと私は理解しています。私は現在、各シートにある量のデータを持っています。私は行のデータをコピーするときに最終行を避けています(Works完璧)。そして、私は列をコピーするときに最後の列を避けています(Works完璧)。lastcol&lastrowを使用して、あるシートから別のシートに情報をコピーして貼り付ける

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 

実際に最後の列が必要なように変換するにはどうすればよいですか?これについて簡単な方法がありますか、列番号をセル値に変換するケースを設定する必要がありますか?

回答:

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 

答えて

1

周り掘りのビットの後、私はあなたが列の値からアドレスを引き出すことができることを考え出しました。以下のコードは、列番号をアルファベット列に変換したい人に役立つことを願っています。

Dim gAddress 
gAddress = Split(Cells(1, lastcol).Address(True, False), "$") 
letter = gAddress(0) 
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 
関連する問題