【发布时间】:2014-08-01 23:54:07
【问题描述】:
目前,我正在处理来自一项临床研究的大量数据。对于 SAS 中的分析,我必须更改存储在 Excel 表中的数据的排列。如果我手动进行复制和粘贴,这意味着数小时的复制和粘贴,所以我尝试编写一个宏。我花了几个小时试图弄清楚代码,我想出了一个草稿,当然它不起作用,因为我没有任何 VBA 的背景,所以对语法没有更深入的了解。虽然问题真的很简单。这就是我想做的(对不起,只是一个链接......因为我还不能发布图片)
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 列必须以相同的方式处理。但我认为仍然比手动复制和粘贴所有这些要好...
提前非常感谢!
【问题讨论】:
标签: excel for-loop copy-paste vba