如何满足特定条件时使用VBA来抵消+一列(循环)

我创build了一个电子表格来计算时间研究平均值,其中试图将特定的信息从一个表单转移到另一个表单,而在满足特定条件时对列进行偏移。 我能够完成一个代码,从工作表(“Time_Study_Data_Analysis”)到工作表(“Process_Modeling_Tool”)检索所需的数据(平均时间)。 但是我只能将所有的数据填入一列。

在所有“活动任务”已经填充到每个“过程元素”之后,我想要抵消+1列。我将附上我的电子表格以供更好的说明,或者我可以通过电子邮件发送。 任何帮助将不胜感激。 如果您需要进一步的细节,请与我联系。 谢谢

Sub Time_Study() Rn = 17 Rn2 = 8 Do Until Sheets("Time_Study_Data_Analysis").Cells(Rn, 2) = "HARTNESS" If Sheets("Time_Study_Data_Analysis").Cells(Rn, 3) = Empty Then Rn = Rn + 1 Else Sheets("Process_Modeling_Tool").Cells(Rn2, 2) = Sheets("Time_Study_Data_Analysis").Cells(Rn, 3) Sheets("Process_Modeling_Tool").Cells(Rn2, 6) = Sheets("Time_Study_Data_Analysis").Cells(Rn, 14) Rn = Rn + 1 Rn2 = Rn2 + 1 End If Loop End Sub 

目标的屏幕

这应该做到这一点

 Sub Time_Study() Dim rn As Long, rn2 As Long, cl As Long rn = 17 rn2 = 8 cl = 6 ' if the outpout is off the correct column adjust this. Do Until Sheets("Time_Study_Data_Analysis").Cells(rn, 2) = "HARTNESS" If Sheets("Time_Study_Data_Analysis").Cells(rn, 3) <> "" And _ Sheets("Time_Study_Data_Analysis").Cells(rn - 1, 3) = "" Then cl = cl + 1 End If If Sheets("Time_Study_Data_Analysis").Cells(rn, 3) = "" Then rn = rn + 1 Else Sheets("Process_Modeling_Tool").Cells(rn2, 2) = Sheets("Time_Study_Data_Analysis").Cells(rn, 3) Sheets("Process_Modeling_Tool").Cells(rn2, cl) = Sheets("Time_Study_Data_Analysis").Cells(rn, 14) rn = rn + 1 rn2 = rn2 + 1 End If Loop End Sub 

每当发现一个新组时,它将移动到一列。 新组是由一个空的前面的一个完整的单元决定的。

我也宣布了variables,这是很重要的,如果你的行超过整数限制。


作为一个方面说明,使用With Block将节省大量的重复input,并缩短一些较长的行:

 Sub Time_Study() Dim rn As Long, rn2 As Long, cl As Long rn = 17 rn2 = 8 cl = 6 ' if the outpout is off the correct column adjust this. With Sheets("Time_Study_Data_Analysis") Do Until .Cells(rn, 2) = "HARTNESS" If .Cells(rn, 3) <> "" And .Cells(rn - 1, 3) = "" Then cl = cl + 1 End If If .Cells(rn, 3) = "" Then rn = rn + 1 Else Sheets("Process_Modeling_Tool").Cells(rn2, 2) = .Cells(rn, 3) Sheets("Process_Modeling_Tool").Cells(rn2, cl) = .Cells(rn, 14) rn = rn + 1 rn2 = rn2 + 1 End If Loop End With End Sub