【问题标题】:For Each loop inside a For Each loopFor Each 循环内的 For Each 循环
【发布时间】:2015-11-12 15:26:37
【问题描述】:

我有 2 张纸,所以我想 loop 两个范围内的供应商(它们应该始终匹配,但是 ccc 名称后面会添加一些额外的文本,因此 replace)。

我的问题是我显然不能同时运行 cc 和 ccc,但我需要比较 cc 和 ccc。我怎样才能让这样的事情成为可能?

    For Each cc In rngMyRange
        For Each ccc In Worksheets(10).Range("F3:F" & lastrow2).Cells

            Dim ContactID As String, ContactID2 As String
            ContactID = Sheets(10).Range("F" & ccc.Row).Value
            ContactID = Replace(ContactID, ContactID, cc)

            Debug.Print ContactID

            If cc Like ContactID Then
                If Sheets(1).Range("M" & cc.Row).Value Like "AN*" Then
                    Sheets(1).Range("M" & cc.Row).Copy Destination:=Sheets(10).Range("G" & ccc.Row)
                End If
            End If

        Next ccc
    Next cc

【问题讨论】:

  • 你试过使用 mid 命令吗?
  • 不,我没有@Balinti。这对我有什么帮助? :-)
  • 我想我可以遍历工作表 (10) 中的范围以寻找与 cc 匹配的内容。如果有匹配,然后做所有的事情并移动到下一个抄送,等等。你能帮忙吗?
  • 你能举例说明ccc和cc是什么样的吗?我不知道你现在在做什么。如果它们在同一行,您只想比较它们吗?因为现在他们每个人都将与其他人进行比较。所以你可能会得到一个匹配......例如在 1 和 3 之间。
  • 嗨@DavidG 抱歉,如果不清楚。所以基本上,我正在与一些供应商合作。所以 cc 和 ccc 是同一个供应商,只是范围不同(如果有意义的话)。我在下面添加了我的新代码,这正在工作(到目前为止) - 我将对其进行更多测试。谢谢。

标签: excel for-loop foreach runtime-error vba


【解决方案1】:

我最终做的有点不同:)

     For Each cc In rngMyRange
        For Each ccc In Worksheets(10).Range("F3:F" & lastrow2).Cells

            Dim FoundCell As Range
            Dim ContactID As String

                ContactID = Sheets(10).Range("F" & ccc.Row).Value

                If ContactID Like cc & "*" Then
                    ContactID = Replace(ContactID, ContactID, cc)
                End If

            Set FoundCell = Sheets(10).Columns(6).Find(what:=ContactID & "*", _
                                                             LookIn:=xlValues, _
                                                             LookAt:=xlWhole)
            If Not FoundCell Is Nothing Then
                If cc Like ContactID Then
                    If Sheets(1).Range("M" & cc.Row).Value Like "AN*" Then
                        Sheets(1).Range("M" & cc.Row).Copy Destination:=Sheets(10).Range("G" & ccc.Row)
                    Else
                        ' Do nothing
                    End If
                End If
            Else
                ' Not found
            End If
        Next ccc
    Next cc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 2015-11-10
    • 2012-09-27
    相关资源
    最近更新 更多