昨日同事在为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提供了更简单的方法
直接复制,然后再到另一个空白处选择"选择性贴上",,跳出一个视窗
把转置打勾即可。