【问题标题】:Excel Macro cut and paste cells with loopExcel宏用循环剪切和粘贴单元格
【发布时间】: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


    【解决方案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
    

    【讨论】:

    • 感谢您的快速回复。有效!哈哈……看来我并没有完全错。但是仍然需要 nr = nr + 1,因为必须将 K 列第一个单元格的第二次剪切粘贴到第一个粘贴下方的一个单元格...再次感谢您!
    • 没问题。但是请记住,当它点击“下一个”时,它将增加一个额外的时间。如果您发现它有帮助,请投票/接受答案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    相关资源
    最近更新 更多