首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置嵌套在for循环中的do while内部循环的值?

如何设置嵌套在for循环中的do while内部循环的值?
EN

Stack Overflow用户
提问于 2019-05-08 22:26:06
回答 1查看 47关注 0票数 0

我有一份从客户的SharePoint下载的报告。报告的长度根据我运行它的站点和时间范围而有所不同。大多数项目的信息都以列的形式很好地排列在每个项目的一行中,但在存在分裂决策的情况下,它会将决策放到多行中,而不会在这些行中保留其他必要的信息。我正在尝试进行拆分处理,并在以下行中查找循环,以复制数量并根据它们的处理情况将它们粘贴到列中。

我已经设置了外部循环,并且它工作了。当我设置内部循环时,它不会取外部循环的值并向其添加1行。

代码语言:javascript
复制
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匹配的列)。

EN

回答 1

Stack Overflow用户

发布于 2019-05-08 23:54:27

将内部循环更改为带有退出选项的for循环,这似乎起作用了。

代码语言:javascript
复制
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 Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56043036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档