昨日同事在為excel中欄和列的資料剛好和他所須要的相反而傷腦筋,看他每一筆資料慢慢的複製貼上,土法煉鋼,非常的痛苦,立即幫他寫了一個程式,結果他花半小時還沒完成的工作,只需幾秒鐘就完成了,會程式真的好好!
回家後把程式稍微修改如下:
先建立一個CommandButton (欄列轉換)
Private Sub CommandButton1_Click()
UserForm1.Show vbModeless
End Sub
再建立一個UserForm
Private Sub CommandButton1_Click()
Call 欄列互換
End
End Sub
Private Sub CommandButton2_Click()
Unload UserForm1
End
End Sub
再插入模組,程式如下
Sub 欄列互換()
'
' Casper 錄製的巨集 Dim Col3 As Integer
Set WS1 = Worksheets("轉換前")
'工作表名稱
Set WS2 = Worksheets("轉換後")
'工作表名稱 WS2.Select
Cells.Select
'把WS2(轉換後工作表)內容清除
Selection.Delete Shift:=xlUp
Row1 = UserForm1.TextBox1.Text
Col1 = UserForm1.TextBox2.Text
If Row1 > 1 And Row1 < 256 And Col1 > 1 And Col1 < 256 Then
'設定條件,讓欄列最大只到256欄或列,以免程式跑太久
For i = 1 To Col1
For j = 1 To Row1
WS1.Cells(i, j).Copy Destination:=WS2.Cells(j, i)
Next j
Next i
Cells(1, 1).Select
Else
MsgBox "輸入錯誤"
'輸入欄列超過256或非數字字元則出現"輸入錯誤"
WS1.Select
Cells(1, 1).Select
End If
End Sub
轉換前
轉換後
補充:
感謝
tuberose提供了更簡單的方法
直接複製,然後再到另一個空白處選擇"選擇性貼上",,跳出一個視窗
把轉置打勾即可。