學員的問題,左邊是原始數據,實際有800多條記錄,每2行復制,轉置成右邊的效果。也就是說,需要操作400多次才能實現全部轉換,想想都是一件吃力不討好的事情。
記住一句話,重復的事情,交給循環語句For Next去做,我們只需教她操作一遍即可。點開發工具,錄制宏,選擇區域B3:G4,復制,點I3,右鍵,轉置,停止錄制。
點開發工具,VB,模塊1,就可以看到剛剛錄制的宏。
先在代碼前后加上循環語句For Next,VBA的變量i可以從0開始。
這里是每2行,操作一遍,因此不需要進行判斷。怎么表示區域向下0行、2行、4行等等?Excel里面的函數Offset可以向下,向右得到對應的值,其實VBA里面也支持這個函數。Range("B3:G4").Offset(2 * i, 0)就代表區域向下0行、2行、4行。
同理,第一次從單元格I3開始轉置,第二次就得從I9開始,第三次就得從I15開始,也就是隔著6行,也就是Range("I3").Offset(6 * i, 0)。
當然,你也可以對代碼進行再一步簡化,前提是你有一定的VBA基礎。如果不熟悉,這一步可以省略,別弄巧成拙。
Sub 批量轉置()
For i = 0 To 2
Range("B3:G4").Offset(2 * i, 0).Copy
Range("I3").Offset(6 * i, 0).PasteSpecial Transpose:=True
Next
End Sub
鏈接:https://pan.baidu.com/s/1fitYWMcuUIMVAVXxFCatww?pwd=n4my
提取碼:n4my
該文章在 2024/8/2 17:49:30 編輯過