根据两个条件查找像元范围

时间:2018-10-29 17:18:41

标签: excel vba excel-vba

我将一些VBA放在一起以找到具有符合我循环中当前值的特定条件的最后一行,然后采取措施。此VBA代码有效,直到我意识到工作表可以多次包含匹配值,但另一列中的日期不同。因此,我现在正在尝试向VBA添加第二个搜索条件。

这是到目前为止的VBA片段。

   For Each t In trans.Cells
            On Error GoTo NxtT2
                If t.Value = Empty Then
                On Error GoTo 0
                    ty = t.Offset(0, -3).Value
                    tx = t.Offset(0, -6).Value
                    Set searchTerm = .Range("E:E")
                    Set where = searchTerm.Find(what:=ty, after:=searchTerm(1), searchdirection:=xlPrevious)
                        If t.Offset(0, -3).Value = where.Value And IsError(where.Offset(0, 3).Value) Then
                            t.Value = "#N/A"
                        End If
                End If

NxtT:
    On Error GoTo 0
    If t.Offset(1, -3).Value = "" Then Exit For
    Next t

NxtT2:
    Resume NxtT

基本上,我要做的是使Set where = searchTerm.Find(what:=ty, after:=searchTerm(1), searchdirection:=xlPrevious)行也包含tx值和已经在其中的ty

如果可能的话,这样的事情?

Set where = searchTerm.Find(what:=ty & tx, after:=searchTerm(1), searchdirection:=xlPrevious)

但是我知道这不是正确的语法。

关于如何以最简单的方式解决此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

不是原始问题的答案,而是我通过现成的代码审查创建的问题。

您的错误处理从未正确包装。代码仍然认为它在错误处理程序中,因为您实际上无法使用Next“退出”错误处理程序-您需要使用{{1保留此错误处理“实例” }}。

为此提供一个机会,以进行清理错误处理。

注意:我声明了变量是因为设置了Resume,您也应该设置。我已经做出了一个大胆的假设,即您已经在共享代码之外声明了变量。使用您声明的变量,而不要使用我的快速补丁Option Explicit声明。

Variant
相关问题