Vba 如果多个条件匹配,则返回true

Vba 如果多个条件匹配,则返回true,vba,excel,Vba,Excel,你好,我是VBA的新手。我在一个超过10000行的大型电子表格中工作。我正在努力实现的是: 首先,带有的宏将在列E中查找值1 如果存在匹配项,它将在D列左侧的一个单元格中查找两个可能的字符串值 如果该行的两个条件都满足,则在相应的G行中返回true 这就是我下面的内容,它在下面不起作用,我遇到了错误。感谢您的帮助 Sub find_mismatch() Dim c As Range Dim string1 As String Dim string2 As S

你好,我是VBA的新手。我在一个超过10000行的大型电子表格中工作。我正在努力实现的是:

  • 首先,带有的宏将在列E中查找值1

  • 如果存在匹配项,它将在D列左侧的一个单元格中查找两个可能的字符串值

  • 如果该行的两个条件都满足,则在相应的G行中返回true

  • 这就是我下面的内容,它在下面不起作用,我遇到了错误。感谢您的帮助

        Sub find_mismatch()
         Dim c As Range
         Dim string1 As String
         Dim string2 As String
         string1 = "Apple"
         string2 = "Orange"
    
         For Each c In Range("E1:E10138")
             If c.Value = 1 Then
                 If ActiveCell.Offset(-1, 0).Value = string1 Or string2 Then
                    ActiveCell.Offset(2, 0).Value = "True"
                 End If
             End If
         Next
    End Sub
    

    多个if条件始终必须完整编写,即使感觉像是在重复自己

    更改此项:

    If ActiveCell.Offset(-1, 0).Value = string1 Or string2 Then
        ActiveCell.Offset(2, 0).Value = "True"
    End If
    
    为此:

    If c.Offset(0, -1).Value = string1 Or c.Offset(0, -1).Value = string2 Then
        c.Offset(0, 2).Value = "True"
    End If
    

    编辑:刚刚意识到行和列也被颠倒了。offset的语法是offset(行、列)。因此,要向左走,请将负数放在第二个参数中,而不是第一个参数。

    “它不工作”/“出错”-您希望它如何工作(显示示例数据和小样本的预期结果),以及它实际如何工作?错误是什么?在哪一行代码上创建了错误/创建错误时它在工作簿中到达了哪一行?有关如何修复此问题,请参阅ScottCraner的答案。然而,为什么要在这里使用宏,在这里你可以使用一个非常简单的公式?@ChrisHelgeson我意识到一个小错误并已修复,请尝试编辑。