標題:
Excel 左上至右下的資料交換
發問:
我有12個sheet,每個sheet裡都有640x480的數字資料,已寫了如下的程式去將左上至右下的資料交換,即將整個方塊的資料旋轉180度,但是我是利用三個for去寫的,所以,中間資料複製的程式要執行 480x640x12,要花幾分鐘才能跑完,有更快的寫法嗎?再請高手指教,謝謝!Private Sub CommandButton1_Click() Application.ScreenUpdating = False For i = 1 To 12 With Sheets(i) For x = 0 To 640 - 1... 顯示更多 我有12個sheet,每個sheet裡都有640x480的數字資料,已寫了如下的程式去將左上至右下的資料交換,即將整個方塊的資料旋轉180度,但是我是利用三個for去寫的,所以,中間資料複製的程式要執行 480x640x12,要花幾分鐘才能跑完,有更快的寫法嗎?再請高手指教,謝謝! Private Sub CommandButton1_Click() Application.ScreenUpdating = False For i = 1 To 12 With Sheets(i) For x = 0 To 640 - 1 For y = 0 To 480 - 1 .Cells(481 + y, 1 + x) = .Cells(480 - y, 640 - x) Next y Next x .Rows("1:480").Delete End With Next i Application.ScreenUpdating = True End Sub
- mp3和隨身碟有何不同,價錢差多少-
- 五股搭車怎麼到台北國際會議中心-
- DirectX9.0的問題-20點不要po文~個人意見喔@1@
- 做公車到石門福華急需知道
- 大樂透31號碼組合有多少--
- <急 > SketchUp 製作問題@1@
- 台酒有賣紅麴餅嗎-
- 奇哉!奇哉!眾生皆有佛性請問在哪部經記載-
- canon 400D 外閃光燈問題~~
- 南部有哪幾所大學是公立的呀??@1@
此文章來自奇摩知識+如有不便請留言告知
最佳解答:
Const X = 640 Const Y = 480 Dim i, AP, AR, r, c For i = 1 To 12 With Sheets(i) ReDim AP(1 To Y, 1 To X), AR(1 To Y, 1 To X) AP = .[A1].Resize(Y, X) For r = 1 To Y For c = 1 To X AR(r, c) = AP(Y - r + 1, X - c + 1) Next Next .[A1].Resize(Y, X) = AR End With Next 2013-06-06 09:48:18 補充: 改用陣列轉換的方式,速度會增快許多,程式碼改為: Private Sub CommandButton1_Click() Const X = 640 Const Y = 480 Dim i, AP, AR, r, c Application.ScreenUpdating = FalseFor i = 1 To 12 With Sheets(i) ReDim AP(1 To Y, 1 To X), AR(1 To Y, 1 To X) AP = .[A1].Resize(Y, X) For r = 1 To Y For c = 1 To X AR(r, c) = AP(Y - r + 1, X - c + 1) Next Next .[A1].Resize(Y, X) = AR End With Next Application.ScreenUpdating = TrueEnd Sub
其他解答:
哦!用ARRAY來做資料交換,速度快了十倍哩!謝謝你的幫忙!6524A8F2D361E9E1