如何使用VBA代碼實現多行多列轉置?

大家對excel中的選擇性粘貼中的轉置功能還是比較熟悉的,如下圖,效果1和效果2可以用選擇性粘貼中的轉置功能相互轉置。但對於效果1和效果3之間的轉置,則需要VBA代碼來實現。本例教大家使用VBA實現效果1和效果3之間的轉置。

如何使用VBA代碼實現多行多列轉置

工具/原料

excel 2007

一、由1轉置成3效果

首次使用VBA時,需要調出“開發工具”:點擊左上角的excel圖標—excel選項—常規—勾選在功能區顯示“開發工具”選項卡。

如何使用VBA代碼實現多行多列轉置

錄製一個空白宏:開發工具—錄製宏,保存宏後,即停止錄製,得到一空白宏,然後在此宏中編輯宏代碼。

如何使用VBA代碼實現多行多列轉置

首先定義數個Interger類型的變量,變量個數可根據需要隨時增減。這些變量用於單元格地址指示,因此設置為Interger類型。

如何使用VBA代碼實現多行多列轉置

編寫代碼:對變量進行賦值

將選擇區域的單元格列數賦值給變量a,將選擇區域的單元格行數賦值給變量b,將選擇區域左上角單元格所在的列數賦值給c,將選擇區域左上角單元格所在的行數賦值給r。

如何使用VBA代碼實現多行多列轉置

編寫for循環語句

思路:可以看成C4:C5、D4:D5、E4:E5……分別進行復制粘貼,複製粘貼的次數(即循環次數)由選擇區域所佔的列數決定,因此f=1 to a,相當於循環次數由a決定。

每複製粘貼完一次,複製區域就要向後移動一列,因此需要對一個變量進行加1,本例使用e變量。e的起始值應等於選擇區域左上角單元格所在的列數,即e=c,循環後加1,即e=e+1。

如何使用VBA代碼實現多行多列轉置

運行:點擊工具欄上的運行按鈕,或直接按F5運行,運行效果如下圖。

如何使用VBA代碼實現多行多列轉置

二、由3轉置成1效果

同樣先錄製一個空白宏,再編輯代碼。與1轉3不同的是,3轉1時,需要用戶先在單元格中(B1和B2)設置轉置後的列數和行數。

如何使用VBA代碼實現多行多列轉置

定義變量,將單元格B1和B2的值分別賦給a和b;將選擇區域左上角單元格所在的列數和行數分別賦給c和 r;e的初始值等於r;循環次數由B1中的值決定;循環一次後,e的值增加b,即e=e+b,完整代碼如下。

如何使用VBA代碼實現多行多列轉置

運行:增加一組數據,每組數據3個重複,在B1和B2中分別輸入6和3,然後選擇轉置區域數據,點擊運行,效果如下圖。

如何使用VBA代碼實現多行多列轉置

注意事項

需要選擇數據區域後再點擊運行。

由效果3轉效果1時,需要要先輸入轉置後的列數和行數。

相關問題答案