2017-06-17 57 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的答案:) –