我有一份从客户的SharePoint下载的报告。报告的长度根据我运行它的站点和时间范围而有所不同。大多数项目的信息都以列的形式很好地排列在每个项目的一行中,但在存在分裂决策的情况下,它会将决策放到多行中,而不会在这些行中保留其他必要的信息。我正在尝试进行拆分处理,并在以下行中查找循环,以复制数量并根据它们的处理情况将它们粘贴到列中。
我已经设置了外部循环,并且它工作了。当我设置内部循环时,它不会取外部循环的值并向其添加1行。
Sub Split_Dispositions_One_Line()
Dim LastRow As Integer
Dim i As Integer
i = x + i
LastRow = Worksheets("Data").UsedRange.Rows.Count
With Worksheets("Data")
For x = 1 To LastRow
If InStr(Range("Y" & x).Value, "Split Disposition") Then
Do While Application.WorksheetFunction.IsText(Range("AI" & i).Value)
If InStr(Range("AI" & i).Value, "Release to Good Inventory") Then
Range("AH" & i).Copy Range("AK" & x)
ElseIf InStr(Range("AI" & i).Value, "Donate") Then
Range("AH" & i).Copy Range("AL" & x)
ElseIf InStr(Range("AI" & i).Value, "Destroy, Landfill") Then
Range("AH" & i).Copy Range("AM" & x)
ElseIf InStr(Range("AI" & i).Value, "Destroy, Animal Feed") Then
Range("AH" & i).Copy Range("AN" & x)
ElseIf InStr(Range("AI" & i).Value, "Return To Plant") Then
Range("AH" & i).Copy Range("AO" & x)
End If
Loop
End If
Next x
End With
End Sub我的目标是循环遍历各行,当我在Y列中遇到"Split Disposition“时,它将转到内部循环,从Y中找到"Split Disposition”的位置向下放置1行,然后循环通过这些行。如果AI包含文本,它将复制AH中的值并将其粘贴到原始行中对应于AH的列,在该列中,它在Y列中找到"Split Disposition“。这些行的数量各不相同,但它们总是一个接一个。
换句话说,如果循环在单元格Y5中找到"Split Disposition“,那么内部循环将从AI6开始,如果它有文本copy AH6并粘贴到列AK5中,那么如果AI7包含文本,它将复制AH7并将其粘贴到AL5中(如果这是与AH7匹配的列)。
发布于 2019-05-08 23:54:27
将内部循环更改为带有退出选项的for循环,这似乎起作用了。
Sub Split_Dispositions_One_Line()
Dim LastRow As Integer
Dim i As Integer
LastRow = Worksheets("Data").UsedRange.Rows.Count
With Worksheets("Data")
For x = 1 To LastRow
If InStr(Range("Y" & x).Value, "Split Disposition") Then
For i = x + 1 To LastRow
If Application.WorksheetFunction.IsText(Range("AI" & i).Value) Then
If InStr(Range("AI" & i).Value, "Release to Good Inventory") Then
Range("AH" & i).Copy Range("AK" & x)
ElseIf InStr(Range("AI" & i).Value, "Donate") Then
Range("AH" & i).Copy Range("AL" & x)
ElseIf InStr(Range("AI" & i).Value, "Destroy, Landfill") Then
Range("AH" & i).Copy Range("AM" & x)
ElseIf InStr(Range("AI" & i).Value, "Destroy, Animal Feed") Then
Range("AH" & i).Copy Range("AN" & x)
ElseIf InStr(Range("AI" & i).Value, "Return To Plant") Then
Range("AH" & i).Copy Range("AO" & x)
End If
ElseIf IsEmpty(Range("AI" & i).Value) Then
Exit For
End If
Next i
End If
Next x
End With
End Subhttps://stackoverflow.com/questions/56043036
复制相似问题