鉴于你有多少个循环,这听起来像你最好只使用一个计数器作为你的输出行。
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