2014-06-11 44 views
1

我正在處理臨牀研究中的大量數據。對於SAS中的分析,我必須更改存儲在Excel表中的數據的排列方式。這意味着需要數小時的複製和粘貼,如果我手動執行,所以我試圖寫一個宏。我花了幾個小時試圖弄清楚代碼,我提出了一個草案,當然這是行不通的,因爲我沒有VBA背景,所以沒有更深入的語法理解。雖然這個問題非常簡單。這裏就是我想要做的(SRY,只是一個鏈接......因爲我不能張貼圖片還)Excel宏切割和粘貼循環細胞

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'的計數變量並將其插入代表該範圍的字符串中。但我不明白錯誤信息,這絕對不是唯一的問題。對於缺少的適當條款,Sry ......英語不是我的母語。如果有人能夠嘗試寫出一種我想象中那種工作方式的例子,我會很高興。如果你甚至可以遵循我想要的。 我還需要做的是改變範圍的名字。由於還有另外29列必須以相同的方式處理。但仍然比只是複製和粘貼所有這些手動,我認爲...

非常感謝提前!

回答

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 
+0

感謝您的快速回復。有效!哈哈......好像我並沒有完全錯誤。 nr = nr + 1仍然是需要的,不過因爲第K列的第一個單元格的第二個單元格必須粘貼到第一個單元格下面的一個單元格中......再次謝謝您! –

+0

沒問題。但請記住,它會在「下一個」點擊時增加額外的時間。請投票/接受答案,如果你發現它有幫助。謝謝。 – MatthewHagemann