Excel宏用循环剪切和粘贴单元格

时间:2014-06-11 19:34:04

标签: excel excel-vba for-loop copy-paste vba

我目前正在处理来自临床研究的大量数据。对于SAS中的分析,我必须更改存储在excel表中的数据的排列。如果我手动完成,这意味着复制和粘贴的时间,所以我尝试编写一个宏。我花了好几个小时试图找出代码,我想出了一个草稿,当然它没有用,因为我没有VBA的任何背景,所以没有更深入的理解语法。虽然这个问题非常简单。这就是我想要做的事情(sry,只是一个链接...因为我还不能发布图片)

http://s7.directupload.net/images/140611/b96dhime.png

首先是红色箭头:从列mmp1_v1中的顶部单元格中剪切值并将其粘贴到列mmp1的第一个单元格中。 然后是蓝色的:从列mmp1_v2中的顶部单元格中剪切值,并将其粘贴到mmp1列顶部的第二个单元格中。 下一个红色和蓝色箭头也是如此。我每列有194行,97有值,97有空,所以这个过程应该在一个循环中完成97次。所有这一切共29列。

我提出的代码 - 显然不起作用 - 看起来像这样:

Sub cut_paste()

Dim nr As Integer
For nr = 1 to 195

Range("J&nr&").Select
Selection.Cut
Range("I&nr&").Select
ActiveSheet.Paste
Range("K&nr&").Select
Selection.Cut

nr = nr + 1

Range("I&nr&").Select
ActiveSheet.Paste

Next nr

End Sub

我希望它能像Java一样。我知道......不是同一种语言,但我只是考虑定义一个名为' nr'并将其插入代表范围的字符串中。但我不理解错误信息,这绝对不是唯一的问题。为缺少合适的条款而烦恼......英语不是我的母语。如果有人能够尝试以我想象的方式编写一个可行的例子,我会很高兴。如果你甚至可以按照我想要的方式行事。 那时我还要做的就是改变范围的名称。由于还有另外29列必须以相同的方式处理。但仍然比仅仅手动复制和粘贴所有这些更好...我想...

提前多多感谢!

1 个答案:

答案 0 :(得分:1)

您必须在vba中以不同方式处理字符串。您还需要丢失nr = nr + 1,因为下一个将增加它。请参阅以下代码:

Sub cut_paste()

Dim nr As Integer
For nr = 1 to 195

Range("J" & nr).Select
Selection.Cut
Range("I" & nr).Select
ActiveSheet.Paste
Range("K" & nr).Select
Selection.Cut

Range("I" & nr).Select
ActiveSheet.Paste

Next nr

End Sub