2017-05-08 10 views
1

シート1の列をコピーしてシート2、特にシート2の次の空の列に貼り付けようとしています(データを上書きしないようにします)。合計で、私は列3-81をコピーする必要があります。ここVBA(ループ付き)を使用して1つのシートから別のシートに列をコピー

は私が持っているコードは、これまでである。

Dim col As Integer 

For i = 3 To 81 
Worksheets("Sheet1").Columns(i).Copy Destination:=Sheets("Sheet 2").Column(i). 

私は次のものをコピーして貼り付ける前に、すべての貼り付け列に関数を適用するので、私は単にカラム(i)と目的地を示すことができないことので計算されたデータの最後の列を単に上書きします。

この問題が発生しないように宛先を変更するにはどうすればよいですか?

この質問は以前は何度も聞かれましたが、ループを使用してcolをiとして割り当てる唯一の方法だと思われるため、私の解を見つけることができません。

+0

私は本当にこの質問を理解している人を心よりお待ちしております。 – Tehscript

+0

[ワークシートで最後に使用された行または列を検索する方法](http://stackoverflow.com/documentation/excel-vba/918/methods-for-finding-the-last-used-row-or-column- in-a-worksheet#t = 201705082041081950548) - ループ**内で最後に使用された列**を見つけても、それを見つける方法には影響しません。 – YowE3K

+0

@Tehスクリプト、ティム・ウィリアムズと会う... – MacroMarc

答えて

1
Dim i As Long, j As Long 

j = 3 
For i = 3 To 81 
    Worksheets("Sheet1").Columns(i).Copy _ 
      Destination:=Sheets("Sheet 2").Columns(j) 
    j = j + 2 
Next i 
+0

魔法のように働いた。本当にありがとう! –

+0

なぜ 'j = j + 2'の部分が得られないのですか?どうして 'j = j + 1'?または、すべての列を一度にコピーして貼り付けないのはなぜですか? – Seb

+0

私の特定のデータでは、すべての列を一度に転送することはできません。なぜなら、貼り付けられた列ごとに、その列のすぐ右に新しい列のデータを作成する機能を適用するからです。 j = j + 1は、この新しい列のデータを上書きします。 –

関連する問題