2017-05-08 115 views
1

我试图复制纸张1中的列并将它们粘贴到纸张2中,特别是在纸张2上的下一个空列中(这样我就不会覆盖数据)。总之,我需要复制3-81列。使用VBA(带循环)将列从一张纸复制到另一张

这里是我的代码至今:

Dim col As Integer 

For i = 3 To 81 
Worksheets("Sheet1").Columns(i).Copy Destination:=Sheets("Sheet 2").Column(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

@Tehscript,见蒂姆·威廉姆斯...... – 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会覆盖它旁边的新数据列。 –

相关问题