2017-06-17 54 views
2

我想与N2比较范围A2A3N3A4N4并希望在L2输出作为True/False用于A2比较结果VS N2A3N3比较结果具有在L3等。比较不同的范围与括号记号

而且N2之间的下一个比较N16N3N17 ....

请提供您的反馈意见,这样我可以继续进行。

我已经写了下面的代码,但选择的范围不是为我工作:

Sub CompareCells() 
    If [A2,A3] = [N2,N3] Then 
     [L2,L3] = "yes" 
    Else 
     [L2,L3] = "no" 
    End If 
End Sub 
+0

是的,这听起来很简单。有什么需要帮助的吗? – YowE3K

+0

是的我想要vba代码执行以上操作.. – Manu

+0

比较?什么? =,>,<, > =,<=, <>? –

回答

1

正如评论指出,VBA无法处理数组操作,如[A1,A2] = [N2,N3][L2,L3] = "yes",所以你要么需要做每个单独测试,如:

Sub CompareCells() 
    If [A2] = [N2] Then [L2] = "yes" Else [L2] = "No" 
    If [A3] = [N3] Then [L3] = "yes" Else [L3] = "No" 
    If [A4] = [N4] Then [L4] = "yes" Else [L4] = "No" 
End Sub 

,或者你需要有一个循环,如:

Sub CompareCells() 
    Dim r As Long 
    For r = 2 To 4 
     If Cells(r, "A").Value = Cells(r, "N").Value Then 
      Cells(r, "L").Value = "yes" 
     Else 
      Cells(r, "L").Value = "no" 
     End If 
    Next 
End Sub 

在你的问题中没有足够的信息来知道如何扩展这段代码来比较N2和N16等,但是对于你来说继续上面的方法来处理它是很容易的。

+0

上面的查询为我工作.. :) Sub CompareCells() [L2] =“否” 如果[A3] = [N3]则[L3] =“是”否则[L3] =“否” 如果[A4] = [N4]则[L4] =“是” [L4] =“不” End Sub – Manu

+0

非常感谢很多家伙......既然周末来临,但我还是得到了你们所有人的好评......感谢很多...... – Manu

1

当使用括号表示法时,例如[A1]您所使用的方法EVALUATE

使用方括号(例如,“[A1:C5]”)是相同的调用带有一个字符串参数Evaluate方法。

您可以使用此设置由括号标记如指定的范围内Formula财产做你想做什么:

Option Explicit 

Sub CompareCells1() 

    [L2:L10].Formula = "=IF(A2=N2,""yes"",""no"")" 

End Sub 

注意使用:获得Range - 使用, s表示你会这样做:

Option Explicit 

Sub CompareCells2() 

    ' you need to type each cell reference upto L10.... 
    [L2, L3, L4, L5].Formula = "=IF(A2=N2,""yes"",""no"")" 

End Sub 

这不如CompareCells1

您可以将范围分配到Variant但你不能简单地比较两个数组这样的 - 这是行不通的:

Option Explicit 

Sub CompareCells3() 

    Dim var1, var2 

    var1 = [A2:A10] 
    var2 = [N2:N10] 

    ' throws a Type Mismatch error 
    If var1 = var2 Then 
     ' this will never happen 
    End If 

End Sub 

您可以通过使用上述比较var1var2%的故障实例TransposeJoin方法suggested by Siddarth in his comment, per Tim Williams post但我认为CompareCells1方法是最容易的,如果您需要或想要使用括号表示法。使用, s做比较会导致误报。例如:

Option Explicit 

Sub CompareCells4() 

    Dim var1, var2 

    var1 = [A2,A10] 
    var2 = [N2,N10] 

    ' creates a string from the range values 
    If var1 = var2 Then 
     ' this is a false positive - check the value of var1 and var2 
     [L2:L10] = "False positive" 
    End If 

End Sub 

这里var1A2只是价值和var2只是意味着,即使你可以设置与括号标记的范围L2:L10不会让你按你的要求正确比较的N2值。

+1

谢谢你的回答。在周末,我超级懒惰:D –

+0

不用担心 - 当我看到你有用的评论时,我已经半途通过重新发明轮子来指向Tim的答案:) –