標題:
Excel 左上至右下的資料交換
發問:
- 上訴的問題,以及訴訟權請願權-@1@
- 嘉義哪裡可以租遊覽車
- a+b+c=11,求a-b-c=-
- 如何換算成百分比
- 從大甲到僑泰高中
- 台灣樂起來月月抽現金 的問題
- 二技護理學校的選擇
- 台南應用科技大學有羽球場嗎-
- INTEL p4 原廠風扇 0.13a的最高轉速是多少-
- 如何得知家族建立日?
此文章來自奇摩知識+如有不便請留言告知
我有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
最佳解答:
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來做資料交換,速度快了十倍哩!謝謝你的幫忙!6524A8F25B63629D