2015-11-05 68 views
2

你好,我在VBA是相当新的。我在一个超过10,000行的大型电子表格中工作。我试图做到的是:如果多个条件匹配,然后返回true

  1. 先用将在E列查找值1

  2. ,如果有一个匹配,那么它会寻找一个单元到左边的宏D列为两个可能的字符串值。

  3. 如果这两个条件都满足该行则相应的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 
+2

“这不起作用”/“遇到错误” - 您如何期望它可以正常工作(显示示例数据和小样本的预期结果),以及它如何实际工作?什么是错误?在创建错误时,哪行代码会在工作簿中创建错误/行? –

+0

参见ScottCraner关于如何解决这个问题的答案。但是,为什么在这里使用宏,在哪里可以使用一个非常简单的公式? –

回答

1

多个条件总是要写满,即使它感觉就像你在重复自己。

更改此:

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 

编辑:刚刚意识到的行和列也被逆转。偏移的语法是偏移量(行,列)。所以要离开,你把负数放在第二个参数中而不是第一个。

+0

@ChrisHelgeson我意识到一个小错误,并修复它,尝试编辑。 –

+0

这工作完全谢谢你的帮助! –