鑑於你有多少個循環,這聽起來像你最好只使用一個計數器作爲你的輸出行。
Dim FirstPlan As Long: FirstPlan = 0
Dim LastPlan As Long: LastPlan = 5
Dim Plan As Long
Dim FirstArea As Long: FirstArea = 0
Dim LastArea As Long: LastArea = 6
Dim Area As Long
Dim FirstRow As Long: FirstRow = 2
Dim LastRow As Long: LastRow = 10
Dim myRow As Long ' Avoid "Row" as a variable name
Dim OutputRow As Long
OutputRow = 2 'Specify first row to be written to
'List out all areas for all plans
For Plan = FirstPlan To LastPlan
'List out all areas within a plan
For Area = FirstArea To LastArea
'List out one Area
For myRow = FirstRow To LastRow
'I'm guessing at this line
Sheets("S").Cells(OutputRow, "A").Value = _
Sheets("S").Cells(Plan - FirstPlan + 2, "AD").Value
Sheets("S").Cells(OutputRow, "B").Value = _
Sheets("S").Cells(Area - FirstArea + 2, "AE").Value
'I'm guessing at this line
Sheets("S").Cells(OutputRow, "C").Value = _
Sheets("S").Cells(myRow - FirstRow + 2, "AF").Value
'Set up ready for the next row to be written
OutputRow = OutputRow + 1
Next
Next
Next
或者OutputRow
可以計算出每一個它是需要時間:
Dim FirstPlan As Long: FirstPlan = 0
Dim LastPlan As Long: LastPlan = 5
Dim Plan As Long
Dim FirstArea As Long: FirstArea = 0
Dim LastArea As Long: LastArea = 6
Dim Area As Long
Dim FirstRow As Long: FirstRow = 2
Dim LastRow As Long: LastRow = 10
Dim myRow As Long ' Avoid "Row" as a variable name
Dim OutputRow As Long
'List out all areas for all plans
For Plan = FirstPlan To LastPlan
'List out all areas within a plan
For Area = FirstArea To LastArea
'List out one Area
For myRow = FirstRow To LastRow
OutputRow = ((Plan - FirstPlan) * (LastArea - FirstArea + 1) + _
(Area - FirstArea)) * (LastRow - FirstRow + 1) + _
(myRow - FirstRow) + 2
'I'm guessing at this line
Sheets("S").Cells(OutputRow, "A").Value = _
Sheets("S").Cells(Plan - FirstPlan + 2, "AD").Value
Sheets("S").Cells(OutputRow, "B").Value = _
Sheets("S").Cells(Area - FirstArea + 2, "AE").Value
'I'm guessing at this line
Sheets("S").Cells(OutputRow, "C").Value = _
Sheets("S").Cells(myRow - FirstRow + 2, "AF").Value
Next
Next
Next
如果你不習慣循環的控制流程,嘗試運行在下面的例子中空工作表:
Dim colA As Long, colB As Long, colC As Long
Dim r As Long
With ActiveSheet
For colA = 11 To 12
For colB = 21 To 23
For colC = 31 To 34
r = r + 1
.Cells(r, "A").Value = colA
.Cells(r, "B").Value = colB
.Cells(r, "C").Value = colC
Next colC
'The following statement will be executed AFTER processing colC as 34
Next colB
'The following statement will be executed AFTER processing colB as 23
Next colA
'The following statement will be executed AFTER processing colA as 12
End With
顯示你的數據。一張照片就足夠了。 – Masoud
嗨馬蘇德,你如何添加圖片?謝謝:) – JBB
https://meta.stackexchange.com/questions/83096/how-to-place-an-image-in-a-stack-overflow-question – Masoud