2016-05-10 4 views
0

次の問題があります。私はワークシートから内部の値を持つ列全体をコピーし、別のワークシートに貼り付けたいと思います。私はこれを行う次のコードを持っています。ここ複数の列をコピーして貼り付ける

with copySheet.Range("A2:A400") 
pasteSheet.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).resize(.rows.count, .columns.count) = .value 
end with 

iが400番目の行まで列Aの値をコピーし、私はこれが可変になりたいので、私は、その列の最後の値までコピーし、列Bに貼り付けたい

また、私は、私が上記のBとCの値と交換された同じコードを次のように列Bをコピーして、列Cに貼り付けたい場合。

with copySheet.Range("B2:B400") 
pasteSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).resize(.rows.count, .columns.count) = .value 
end with 

このコードは後に上記の最初のものを使用し、A列に列を貼り付けていない誰もがこの問題を解決する方法を知っていますか?

答えて

0

目的のコピー列のデータの最後の行をキャプチャする変数を作成し、Withステートメントでそれを使用します。

Sub test() 

Dim copySheet As Worksheet 
Dim pasteSheet As Worksheet 
Dim lRow As Long 

Set copySheet = Sheets("copySheet") 
Set pasteSheet = Sheets("pasteSheet") 

'Determine last row of Column A in copySheet 
lRow = copySheet.Cells(copySheet.Rows.Count, 1).End(xlUp).Row 

With copySheet.Range("A2:A" & lRow) 
pasteSheet.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Resize(.Rows.Count, .Columns.Count) = .Value 
End With 

'Determine last row of Column B in copySheet 
lRow = copySheet.Cells(copySheet.Rows.Count, 2).End(xlUp).Row 

With copySheet.Range("B2:B" & lRow) 
pasteSheet.Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).Resize(.Rows.Count, .Columns.Count) = .Value 
End With 

End Sub 

その後、さらに一歩それを取ると、あなたがコピーし、それぞれ1を通過するForループを追加する必要がありますどのように多くの列を考慮してLong変数を割り当てることができます。

好奇心を持たずに、シート全体をコピーしてから、pasteSheetの列Aの前に新しい列を挿入しないのはなぜですか?

0

多分これを試すことができますか?もう少しブルートフォースです.... 2番目の質問については、BとCを変更することができます

Columns("A").Select 
Selection.copy 
Range("B1").Select 
ActiveSheet.Paste 
Range("A1").Select 
Application.CutCopyMode = False 
関連する問題